4098ba:	32 c0                	xor    %al,%al
4098bc:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4098bf:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4098c6:	59                   	pop    %ecx
4098c7:	5f                   	pop    %edi
4098c8:	5e                   	pop    %esi
4098c9:	5b                   	pop    %ebx
4098ca:	c9                   	leave
4098cb:	c2 0c 00             	ret    $0xc
4098ce:	8b ff                	mov    %edi,%edi
4098d0:	53                   	push   %ebx
4098d1:	8b dc                	mov    %esp,%ebx
4098d3:	51                   	push   %ecx
4098d4:	51                   	push   %ecx
4098d5:	83 e4 f8             	and    $0xfffffff8,%esp
4098d8:	83 c4 04             	add    $0x4,%esp
4098db:	55                   	push   %ebp
4098dc:	8b 6b 04             	mov    0x4(%ebx),%ebp
4098df:	89 6c 24 04          	mov    %ebp,0x4(%esp)
4098e3:	8b ec                	mov    %esp,%ebp
4098e5:	f6 05 40 d7 40 00 01 	testb  $0x1,0x40d740
4098ec:	56                   	push   %esi
4098ed:	8b 73 08             	mov    0x8(%ebx),%esi
4098f0:	57                   	push   %edi
4098f1:	8b 7b 0c             	mov    0xc(%ebx),%edi
4098f4:	74 1e                	je     0x409914
4098f6:	8d 46 20             	lea    0x20(%esi),%eax
4098f9:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
4098fd:	72 02                	jb     0x409901
4098ff:	8b 00                	mov    (%eax),%eax
409901:	6a 00                	push   $0x0
409903:	6a 00                	push   $0x0
409905:	68 f5 01 00 00       	push   $0x1f5
40990a:	50                   	push   %eax
40990b:	8d 46 10             	lea    0x10(%esi),%eax
40990e:	50                   	push   %eax
40990f:	e8 7b ed ff ff       	call   0x40868f
409914:	8b 4e 4c             	mov    0x4c(%esi),%ecx
409917:	57                   	push   %edi
409918:	51                   	push   %ecx
409919:	8b 01                	mov    (%ecx),%eax
40991b:	8b 70 0c             	mov    0xc(%eax),%esi
40991e:	8b ce                	mov    %esi,%ecx
409920:	ff 15 f0 e1 40 00    	call   *0x40e1f0
409926:	ff d6                	call   *%esi
409928:	f6 05 40 d7 40 00 01 	testb  $0x1,0x40d740
40992f:	8b f0                	mov    %eax,%esi
409931:	74 0b                	je     0x40993e
409933:	56                   	push   %esi
409934:	ba 60 1e 40 00       	mov    $0x401e60,%edx
409939:	e8 10 ed ff ff       	call   0x40864e
40993e:	5f                   	pop    %edi
40993f:	8b c6                	mov    %esi,%eax
409941:	5e                   	pop    %esi
409942:	8b e5                	mov    %ebp,%esp
409944:	5d                   	pop    %ebp
409945:	8b e3                	mov    %ebx,%esp
409947:	5b                   	pop    %ebx
409948:	c2 08 00             	ret    $0x8
40994b:	6a 0c                	push   $0xc
40994d:	68 20 c5 40 00       	push   $0x40c520
409952:	e8 49 0c 00 00       	call   0x40a5a0
409957:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40995b:	8d 4d 08             	lea    0x8(%ebp),%ecx
40995e:	e8 6b f6 ff ff       	call   0x408fce
409963:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40996a:	b0 01                	mov    $0x1,%al
40996c:	eb 50                	jmp    0x4099be
40996e:	8b 45 ec             	mov    -0x14(%ebp),%eax
409971:	8b 00                	mov    (%eax),%eax
409973:	8b 00                	mov    (%eax),%eax
409975:	89 45 e4             	mov    %eax,-0x1c(%ebp)
409978:	33 c0                	xor    %eax,%eax
40997a:	40                   	inc    %eax
40997b:	c3                   	ret
40997c:	8b 65 e8             	mov    -0x18(%ebp),%esp
40997f:	a1 00 d0 40 00       	mov    0x40d000,%eax
409984:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
409989:	74 14                	je     0x40999f
40998b:	80 78 19 03          	cmpb   $0x3,0x19(%eax)
40998f:	72 0e                	jb     0x40999f
409991:	ff 75 e4             	push   -0x1c(%ebp)
409994:	ff 70 14             	push   0x14(%eax)
409997:	ff 70 10             	push   0x10(%eax)
40999a:	e8 36 ec ff ff       	call   0x4085d5
40999f:	f6 05 40 d7 40 00 04 	testb  $0x4,0x40d740
4099a6:	74 0d                	je     0x4099b5
4099a8:	ff 75 e4             	push   -0x1c(%ebp)
4099ab:	ba 88 1e 40 00       	mov    $0x401e88,%edx
4099b0:	e8 99 ec ff ff       	call   0x40864e
4099b5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4099bc:	32 c0                	xor    %al,%al
4099be:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4099c1:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4099c8:	59                   	pop    %ecx
4099c9:	5f                   	pop    %edi
4099ca:	5e                   	pop    %esi
4099cb:	5b                   	pop    %ebx
4099cc:	c9                   	leave
4099cd:	c2 10 00             	ret    $0x10
4099d0:	6a 0c                	push   $0xc
4099d2:	68 40 c5 40 00       	push   $0x40c540
4099d7:	e8 c4 0b 00 00       	call   0x40a5a0
4099dc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4099e0:	8d 4d 08             	lea    0x8(%ebp),%ecx
4099e3:	e8 94 f6 ff ff       	call   0x40907c
4099e8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4099ef:	b0 01                	mov    $0x1,%al
4099f1:	eb 50                	jmp    0x409a43
4099f3:	8b 45 ec             	mov    -0x14(%ebp),%eax
4099f6:	8b 00                	mov    (%eax),%eax
4099f8:	8b 00                	mov    (%eax),%eax
4099fa:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4099fd:	33 c0                	xor    %eax,%eax
4099ff:	40                   	inc    %eax
409a00:	c3                   	ret
409a01:	8b 65 e8             	mov    -0x18(%ebp),%esp
409a04:	a1 00 d0 40 00       	mov    0x40d000,%eax
409a09:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
409a0e:	74 14                	je     0x409a24
409a10:	80 78 19 03          	cmpb   $0x3,0x19(%eax)
409a14:	72 0e                	jb     0x409a24
409a16:	ff 75 e4             	push   -0x1c(%ebp)
409a19:	ff 70 14             	push   0x14(%eax)
409a1c:	ff 70 10             	push   0x10(%eax)
409a1f:	e8 b1 eb ff ff       	call   0x4085d5
409a24:	f6 05 40 d7 40 00 04 	testb  $0x4,0x40d740
409a2b:	74 0d                	je     0x409a3a
409a2d:	ff 75 e4             	push   -0x1c(%ebp)
409a30:	ba 88 1e 40 00       	mov    $0x401e88,%edx
409a35:	e8 14 ec ff ff       	call   0x40864e
409a3a:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409a41:	32 c0                	xor    %al,%al
409a43:	8b 4d f0             	mov    -0x10(%ebp),%ecx
409a46:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
409a4d:	59                   	pop    %ecx
409a4e:	5f                   	pop    %edi
409a4f:	5e                   	pop    %esi
409a50:	5b                   	pop    %ebx
409a51:	c9                   	leave
409a52:	c2 0c 00             	ret    $0xc
409a55:	6a 0c                	push   $0xc
409a57:	68 60 c5 40 00       	push   $0x40c560
409a5c:	e8 3f 0b 00 00       	call   0x40a5a0
409a61:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409a65:	8d 4d 08             	lea    0x8(%ebp),%ecx
409a68:	e8 c6 f6 ff ff       	call   0x409133
409a6d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409a74:	b0 01                	mov    $0x1,%al
409a76:	eb 50                	jmp    0x409ac8
409a78:	8b 45 ec             	mov    -0x14(%ebp),%eax
409a7b:	8b 00                	mov    (%eax),%eax
409a7d:	8b 00                	mov    (%eax),%eax
409a7f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
409a82:	33 c0                	xor    %eax,%eax
409a84:	40                   	inc    %eax
409a85:	c3                   	ret
409a86:	8b 65 e8             	mov    -0x18(%ebp),%esp
409a89:	a1 00 d0 40 00       	mov    0x40d000,%eax
409a8e:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
409a93:	74 14                	je     0x409aa9
409a95:	80 78 19 03          	cmpb   $0x3,0x19(%eax)
409a99:	72 0e                	jb     0x409aa9
409a9b:	ff 75 e4             	push   -0x1c(%ebp)
409a9e:	ff 70 14             	push   0x14(%eax)
409aa1:	ff 70 10             	push   0x10(%eax)
409aa4:	e8 2c eb ff ff       	call   0x4085d5
409aa9:	f6 05 40 d7 40 00 04 	testb  $0x4,0x40d740
409ab0:	74 0d                	je     0x409abf
409ab2:	ff 75 e4             	push   -0x1c(%ebp)
409ab5:	ba 88 1e 40 00       	mov    $0x401e88,%edx
409aba:	e8 8f eb ff ff       	call   0x40864e
409abf:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409ac6:	32 c0                	xor    %al,%al
409ac8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
409acb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
409ad2:	59                   	pop    %ecx
409ad3:	5f                   	pop    %edi
409ad4:	5e                   	pop    %esi
409ad5:	5b                   	pop    %ebx
409ad6:	c9                   	leave
409ad7:	c2 0c 00             	ret    $0xc
409ada:	8b ff                	mov    %edi,%edi
409adc:	55                   	push   %ebp
409add:	8b ec                	mov    %esp,%ebp
409adf:	51                   	push   %ecx
409ae0:	51                   	push   %ecx
409ae1:	8b 45 10             	mov    0x10(%ebp),%eax
409ae4:	53                   	push   %ebx
409ae5:	56                   	push   %esi
409ae6:	57                   	push   %edi
409ae7:	8b f9                	mov    %ecx,%edi
409ae9:	89 45 fc             	mov    %eax,-0x4(%ebp)
409aec:	8b 4d 08             	mov    0x8(%ebp),%ecx
409aef:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
409af4:	3b ce                	cmp    %esi,%ecx
409af6:	77 79                	ja     0x409b71
409af8:	8b 57 14             	mov    0x14(%edi),%edx
409afb:	83 c9 07             	or     $0x7,%ecx
409afe:	89 55 f8             	mov    %edx,-0x8(%ebp)
409b01:	3b ce                	cmp    %esi,%ecx
409b03:	77 15                	ja     0x409b1a
409b05:	8b da                	mov    %edx,%ebx
409b07:	8b c6                	mov    %esi,%eax
409b09:	d1 eb                	shr    $1,%ebx
409b0b:	2b c3                	sub    %ebx,%eax
409b0d:	3b d0                	cmp    %eax,%edx
409b0f:	77 09                	ja     0x409b1a
409b11:	8d 34 13             	lea    (%ebx,%edx,1),%esi
409b14:	3b ce                	cmp    %esi,%ecx
409b16:	72 02                	jb     0x409b1a
409b18:	8b f1                	mov    %ecx,%esi
409b1a:	8d 46 01             	lea    0x1(%esi),%eax
409b1d:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
409b20:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
409b25:	76 03                	jbe    0x409b2a
409b27:	83 c9 ff             	or     $0xffffffff,%ecx
409b2a:	e8 5c e3 ff ff       	call   0x407e8b
409b2f:	8b d8                	mov    %eax,%ebx
409b31:	89 77 14             	mov    %esi,0x14(%edi)
409b34:	8b 45 08             	mov    0x8(%ebp),%eax
409b37:	89 47 10             	mov    %eax,0x10(%edi)
409b3a:	8d 34 00             	lea    (%eax,%eax,1),%esi
409b3d:	56                   	push   %esi
409b3e:	ff 75 fc             	push   -0x4(%ebp)
409b41:	53                   	push   %ebx
409b42:	e8 76 11 00 00       	call   0x40acbd
409b47:	8b 55 f8             	mov    -0x8(%ebp),%edx
409b4a:	33 c0                	xor    %eax,%eax
409b4c:	83 c4 0c             	add    $0xc,%esp
409b4f:	66 89 04 1e          	mov    %ax,(%esi,%ebx,1)
409b53:	83 fa 08             	cmp    $0x8,%edx
409b56:	72 0e                	jb     0x409b66
409b58:	8b 0f                	mov    (%edi),%ecx
409b5a:	8d 14 55 02 00 00 00 	lea    0x2(,%edx,2),%edx
409b61:	e8 35 b1 ff ff       	call   0x404c9b
409b66:	89 1f                	mov    %ebx,(%edi)
409b68:	8b c7                	mov    %edi,%eax
409b6a:	5f                   	pop    %edi
409b6b:	5e                   	pop    %esi
409b6c:	5b                   	pop    %ebx
409b6d:	c9                   	leave
409b6e:	c2 0c 00             	ret    $0xc
409b71:	e8 01 00 00 00       	call   0x409b77
409b76:	cc                   	int3
409b77:	68 fc 1e 40 00       	push   $0x401efc
409b7c:	ff 15 d4 e1 40 00    	call   *0x40e1d4
409b82:	cc                   	int3
409b83:	cc                   	int3
409b84:	cc                   	int3
409b85:	cc                   	int3
409b86:	cc                   	int3
409b87:	cc                   	int3
409b88:	cc                   	int3
409b89:	cc                   	int3
409b8a:	cc                   	int3
409b8b:	cc                   	int3
409b8c:	cc                   	int3
409b8d:	cc                   	int3
409b8e:	cc                   	int3
409b8f:	cc                   	int3
409b90:	e8 0c 00 00 00       	call   0x409ba1
409b95:	8b 48 04             	mov    0x4(%eax),%ecx
409b98:	83 08 20             	orl    $0x20,(%eax)
409b9b:	89 48 04             	mov    %ecx,0x4(%eax)
409b9e:	33 c0                	xor    %eax,%eax
409ba0:	c3                   	ret
409ba1:	b8 80 d1 40 00       	mov    $0x40d180,%eax
409ba6:	c3                   	ret
409ba7:	cc                   	int3
409ba8:	cc                   	int3
409ba9:	cc                   	int3
409baa:	cc                   	int3
409bab:	cc                   	int3
409bac:	cc                   	int3
409bad:	cc                   	int3
409bae:	cc                   	int3
409baf:	cc                   	int3
409bb0:	e8 ec ff ff ff       	call   0x409ba1
409bb5:	8b 48 04             	mov    0x4(%eax),%ecx
409bb8:	83 08 04             	orl    $0x4,(%eax)
409bbb:	89 48 04             	mov    %ecx,0x4(%eax)
409bbe:	e8 0c 00 00 00       	call   0x409bcf
409bc3:	8b 48 04             	mov    0x4(%eax),%ecx
409bc6:	83 08 02             	orl    $0x2,(%eax)
409bc9:	89 48 04             	mov    %ecx,0x4(%eax)
409bcc:	33 c0                	xor    %eax,%eax
409bce:	c3                   	ret
409bcf:	b8 88 d1 40 00       	mov    $0x40d188,%eax
409bd4:	c3                   	ret
409bd5:	cc                   	int3
409bd6:	cc                   	int3
409bd7:	cc                   	int3
409bd8:	cc                   	int3
409bd9:	cc                   	int3
409bda:	cc                   	int3
409bdb:	cc                   	int3
409bdc:	cc                   	int3
409bdd:	cc                   	int3
409bde:	cc                   	int3
409bdf:	cc                   	int3
409be0:	e8 bc ff ff ff       	call   0x409ba1
409be5:	8b 48 04             	mov    0x4(%eax),%ecx
409be8:	83 08 18             	orl    $0x18,(%eax)
409beb:	89 48 04             	mov    %ecx,0x4(%eax)
409bee:	e8 dc ff ff ff       	call   0x409bcf
409bf3:	8b 48 04             	mov    0x4(%eax),%ecx
409bf6:	83 08 04             	orl    $0x4,(%eax)
409bf9:	89 48 04             	mov    %ecx,0x4(%eax)
409bfc:	33 c0                	xor    %eax,%eax
409bfe:	c3                   	ret
409bff:	cc                   	int3
409c00:	8b ff                	mov    %edi,%edi
409c02:	56                   	push   %esi
409c03:	6a 01                	push   $0x1
409c05:	e8 77 0c 00 00       	call   0x40a881
409c0a:	e8 04 07 00 00       	call   0x40a313
409c0f:	50                   	push   %eax
409c10:	e8 72 0c 00 00       	call   0x40a887
409c15:	e8 f6 06 00 00       	call   0x40a310
409c1a:	8b f0                	mov    %eax,%esi
409c1c:	e8 e8 0b 00 00       	call   0x40a809
409c21:	6a 01                	push   $0x1
409c23:	89 30                	mov    %esi,(%eax)
409c25:	e8 46 04 00 00       	call   0x40a070
409c2a:	83 c4 0c             	add    $0xc,%esp
409c2d:	5e                   	pop    %esi
409c2e:	84 c0                	test   %al,%al
409c30:	74 5f                	je     0x409c91
409c32:	db e2                	fnclex
409c34:	e8 02 09 00 00       	call   0x40a53b
409c39:	68 70 a5 40 00       	push   $0x40a570
409c3e:	e8 e5 05 00 00       	call   0x40a228
409c43:	e8 c4 06 00 00       	call   0x40a30c
409c48:	50                   	push   %eax
409c49:	e8 f7 0b 00 00       	call   0x40a845
409c4e:	59                   	pop    %ecx
409c4f:	59                   	pop    %ecx
409c50:	85 c0                	test   %eax,%eax
409c52:	75 3d                	jne    0x409c91
409c54:	e8 c0 06 00 00       	call   0x40a319
409c59:	e8 f2 06 00 00       	call   0x40a350
409c5e:	e8 ed 06 00 00       	call   0x40a350
409c63:	e8 c0 06 00 00       	call   0x40a328
409c68:	e8 a3 06 00 00       	call   0x40a310
409c6d:	50                   	push   %eax
409c6e:	e8 cc 0b 00 00       	call   0x40a83f
409c73:	59                   	pop    %ecx
409c74:	e8 ac 06 00 00       	call   0x40a325
409c79:	84 c0                	test   %al,%al