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)
40fad6:	ab                   	stos   %eax,%es:(%edi)
40fad7:	e9 be 00 00 00       	jmp    0x40fb9a
40fadc:	39 3d bc 46 42 00    	cmp    %edi,0x4246bc
40fae2:	74 0b                	je     0x40faef
40fae4:	56                   	push   %esi
40fae5:	e8 1f fb ff ff       	call   0x40f609
40faea:	e9 b1 00 00 00       	jmp    0x40fba0
40faef:	83 c8 ff             	or     $0xffffffff,%eax
40faf2:	e9 ac 00 00 00       	jmp    0x40fba3
40faf7:	68 01 01 00 00       	push   $0x101
40fafc:	8d 46 18             	lea    0x18(%esi),%eax
40faff:	57                   	push   %edi
40fb00:	50                   	push   %eax
40fb01:	e8 5a 4f ff ff       	call   0x404a60
40fb06:	83 c4 0c             	add    $0xc,%esp
40fb09:	6b 45 e4 30          	imul   $0x30,-0x1c(%ebp),%eax
40fb0d:	89 45 e0             	mov    %eax,-0x20(%ebp)
40fb10:	8d 80 b8 32 42 00    	lea    0x4232b8(%eax),%eax
40fb16:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fb19:	80 38 00             	cmpb   $0x0,(%eax)
40fb1c:	8b c8                	mov    %eax,%ecx
40fb1e:	74 35                	je     0x40fb55
40fb20:	8a 41 01             	mov    0x1(%ecx),%al
40fb23:	84 c0                	test   %al,%al
40fb25:	74 2b                	je     0x40fb52
40fb27:	0f b6 11             	movzbl (%ecx),%edx
40fb2a:	0f b6 c0             	movzbl %al,%eax
40fb2d:	eb 17                	jmp    0x40fb46
40fb2f:	81 fa 00 01 00 00    	cmp    $0x100,%edx
40fb35:	73 13                	jae    0x40fb4a
40fb37:	8a 87 a0 32 42 00    	mov    0x4232a0(%edi),%al
40fb3d:	08 44 16 19          	or     %al,0x19(%esi,%edx,1)
40fb41:	42                   	inc    %edx
40fb42:	0f b6 41 01          	movzbl 0x1(%ecx),%eax
40fb46:	3b d0                	cmp    %eax,%edx
40fb48:	76 e5                	jbe    0x40fb2f
40fb4a:	83 c1 02             	add    $0x2,%ecx
40fb4d:	80 39 00             	cmpb   $0x0,(%ecx)
40fb50:	75 ce                	jne    0x40fb20
40fb52:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40fb55:	47                   	inc    %edi
40fb56:	83 c0 08             	add    $0x8,%eax
40fb59:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fb5c:	83 ff 04             	cmp    $0x4,%edi
40fb5f:	72 b8                	jb     0x40fb19
40fb61:	53                   	push   %ebx
40fb62:	89 5e 04             	mov    %ebx,0x4(%esi)
40fb65:	c7 46 08 01 00 00 00 	movl   $0x1,0x8(%esi)
40fb6c:	e8 e7 f9 ff ff       	call   0x40f558
40fb71:	83 c4 04             	add    $0x4,%esp
40fb74:	89 86 1c 02 00 00    	mov    %eax,0x21c(%esi)
40fb7a:	8b 45 e0             	mov    -0x20(%ebp),%eax
40fb7d:	8d 4e 0c             	lea    0xc(%esi),%ecx
40fb80:	6a 06                	push   $0x6
40fb82:	8d 90 ac 32 42 00    	lea    0x4232ac(%eax),%edx
40fb88:	5f                   	pop    %edi
40fb89:	66 8b 02             	mov    (%edx),%ax
40fb8c:	8d 52 02             	lea    0x2(%edx),%edx
40fb8f:	66 89 01             	mov    %ax,(%ecx)
40fb92:	8d 49 02             	lea    0x2(%ecx),%ecx
40fb95:	83 ef 01             	sub    $0x1,%edi
40fb98:	75 ef                	jne    0x40fb89
40fb9a:	56                   	push   %esi
40fb9b:	e8 ce fa ff ff       	call   0x40f66e
40fba0:	59                   	pop    %ecx
40fba1:	33 c0                	xor    %eax,%eax
40fba3:	5f                   	pop    %edi
40fba4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40fba7:	5e                   	pop    %esi
40fba8:	33 cd                	xor    %ebp,%ecx
40fbaa:	5b                   	pop    %ebx
40fbab:	e8 a6 33 ff ff       	call   0x402f56
40fbb0:	8b e5                	mov    %ebp,%esp
40fbb2:	5d                   	pop    %ebp
40fbb3:	c3                   	ret
40fbb4:	8b ff                	mov    %edi,%edi
40fbb6:	55                   	push   %ebp
40fbb7:	8b ec                	mov    %esp,%ebp
40fbb9:	56                   	push   %esi
40fbba:	8b 75 14             	mov    0x14(%ebp),%esi
40fbbd:	85 f6                	test   %esi,%esi
40fbbf:	75 04                	jne    0x40fbc5
40fbc1:	33 c0                	xor    %eax,%eax
40fbc3:	eb 6d                	jmp    0x40fc32
40fbc5:	8b 45 08             	mov    0x8(%ebp),%eax
40fbc8:	85 c0                	test   %eax,%eax
40fbca:	75 13                	jne    0x40fbdf
40fbcc:	e8 36 81 ff ff       	call   0x407d07
40fbd1:	6a 16                	push   $0x16
40fbd3:	5e                   	pop    %esi
40fbd4:	89 30                	mov    %esi,(%eax)
40fbd6:	e8 53 80 ff ff       	call   0x407c2e
40fbdb:	8b c6                	mov    %esi,%eax
40fbdd:	eb 53                	jmp    0x40fc32
40fbdf:	57                   	push   %edi
40fbe0:	8b 7d 10             	mov    0x10(%ebp),%edi
40fbe3:	85 ff                	test   %edi,%edi
40fbe5:	74 14                	je     0x40fbfb
40fbe7:	39 75 0c             	cmp    %esi,0xc(%ebp)
40fbea:	72 0f                	jb     0x40fbfb
40fbec:	56                   	push   %esi
40fbed:	57                   	push   %edi
40fbee:	50                   	push   %eax
40fbef:	e8 ec 88 00 00       	call   0x4184e0
40fbf4:	83 c4 0c             	add    $0xc,%esp
40fbf7:	33 c0                	xor    %eax,%eax
40fbf9:	eb 36                	jmp    0x40fc31
40fbfb:	ff 75 0c             	push   0xc(%ebp)
40fbfe:	6a 00                	push   $0x0
40fc00:	50                   	push   %eax
40fc01:	e8 5a 4e ff ff       	call   0x404a60
40fc06:	83 c4 0c             	add    $0xc,%esp
40fc09:	85 ff                	test   %edi,%edi
40fc0b:	75 09                	jne    0x40fc16
40fc0d:	e8 f5 80 ff ff       	call   0x407d07
40fc12:	6a 16                	push   $0x16
40fc14:	eb 0c                	jmp    0x40fc22
40fc16:	39 75 0c             	cmp    %esi,0xc(%ebp)
40fc19:	73 13                	jae    0x40fc2e
40fc1b:	e8 e7 80 ff ff       	call   0x407d07
40fc20:	6a 22                	push   $0x22
40fc22:	5e                   	pop    %esi
40fc23:	89 30                	mov    %esi,(%eax)
40fc25:	e8 04 80 ff ff       	call   0x407c2e
40fc2a:	8b c6                	mov    %esi,%eax
40fc2c:	eb 03                	jmp    0x40fc31
40fc2e:	6a 16                	push   $0x16
40fc30:	58                   	pop    %eax
40fc31:	5f                   	pop    %edi
40fc32:	5e                   	pop    %esi
40fc33:	5d                   	pop    %ebp
40fc34:	c3                   	ret
40fc35:	8b ff                	mov    %edi,%edi
40fc37:	55                   	push   %ebp
40fc38:	8b ec                	mov    %esp,%ebp
40fc3a:	8b 55 08             	mov    0x8(%ebp),%edx
40fc3d:	57                   	push   %edi
40fc3e:	33 ff                	xor    %edi,%edi
40fc40:	66 39 3a             	cmp    %di,(%edx)
40fc43:	74 21                	je     0x40fc66
40fc45:	56                   	push   %esi
40fc46:	8b ca                	mov    %edx,%ecx
40fc48:	8d 71 02             	lea    0x2(%ecx),%esi
40fc4b:	66 8b 01             	mov    (%ecx),%ax
40fc4e:	83 c1 02             	add    $0x2,%ecx
40fc51:	66 3b c7             	cmp    %di,%ax
40fc54:	75 f5                	jne    0x40fc4b
40fc56:	2b ce                	sub    %esi,%ecx
40fc58:	d1 f9                	sar    $1,%ecx
40fc5a:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40fc5d:	83 c2 02             	add    $0x2,%edx
40fc60:	66 39 3a             	cmp    %di,(%edx)
40fc63:	75 e1                	jne    0x40fc46
40fc65:	5e                   	pop    %esi
40fc66:	8d 42 02             	lea    0x2(%edx),%eax
40fc69:	5f                   	pop    %edi
40fc6a:	5d                   	pop    %ebp
40fc6b:	c3                   	ret
40fc6c:	8b ff                	mov    %edi,%edi
40fc6e:	55                   	push   %ebp
40fc6f:	8b ec                	mov    %esp,%ebp
40fc71:	51                   	push   %ecx
40fc72:	53                   	push   %ebx
40fc73:	56                   	push   %esi
40fc74:	57                   	push   %edi
40fc75:	ff 15 84 b1 41 00    	call   *0x41b184
40fc7b:	8b f0                	mov    %eax,%esi
40fc7d:	33 ff                	xor    %edi,%edi
40fc7f:	85 f6                	test   %esi,%esi
40fc81:	74 56                	je     0x40fcd9
40fc83:	56                   	push   %esi
40fc84:	e8 ac ff ff ff       	call   0x40fc35
40fc89:	59                   	pop    %ecx
40fc8a:	57                   	push   %edi
40fc8b:	57                   	push   %edi