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
409c7b:	74 05                	je     0x409c82
409c7d:	e8 e7 0b 00 00       	call   0x40a869
409c82:	e8 89 06 00 00       	call   0x40a310
409c87:	e8 0d 08 00 00       	call   0x40a499
409c8c:	85 c0                	test   %eax,%eax
409c8e:	75 01                	jne    0x409c91
409c90:	c3                   	ret
409c91:	6a 07                	push   $0x7
409c93:	e8 e4 06 00 00       	call   0x40a37c
409c98:	cc                   	int3
409c99:	cc                   	int3
409c9a:	cc                   	int3
409c9b:	cc                   	int3
409c9c:	cc                   	int3
409c9d:	cc                   	int3
409c9e:	cc                   	int3
409c9f:	cc                   	int3
409ca0:	e8 ae 06 00 00       	call   0x40a353
409ca5:	33 c0                	xor    %eax,%eax
409ca7:	c3                   	ret
409ca8:	cc                   	int3
409ca9:	cc                   	int3
409caa:	cc                   	int3
409cab:	cc                   	int3
409cac:	cc                   	int3
409cad:	cc                   	int3
409cae:	cc                   	int3
409caf:	cc                   	int3
409cb0:	e8 2c 08 00 00       	call   0x40a4e1
409cb5:	e8 56 06 00 00       	call   0x40a310
409cba:	50                   	push   %eax
409cbb:	e8 cd 0b 00 00       	call   0x40a88d
409cc0:	59                   	pop    %ecx
409cc1:	c3                   	ret
409cc2:	6a 14                	push   $0x14
409cc4:	68 80 c5 40 00       	push   $0x40c580
409cc9:	e8 d2 08 00 00       	call   0x40a5a0
409cce:	6a 01                	push   $0x1
409cd0:	e8 60 03 00 00       	call   0x40a035
409cd5:	59                   	pop    %ecx
409cd6:	84 c0                	test   %al,%al
409cd8:	0f 84 50 01 00 00    	je     0x409e2e
409cde:	32 db                	xor    %bl,%bl
409ce0:	88 5d e7             	mov    %bl,-0x19(%ebp)
409ce3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409ce7:	e8 15 03 00 00       	call   0x40a001
409cec:	88 45 dc             	mov    %al,-0x24(%ebp)
409cef:	a1 b0 d4 40 00       	mov    0x40d4b0,%eax
409cf4:	33 c9                	xor    %ecx,%ecx
409cf6:	41                   	inc    %ecx
409cf7:	3b c1                	cmp    %ecx,%eax
409cf9:	0f 84 2f 01 00 00    	je     0x409e2e
409cff:	85 c0                	test   %eax,%eax
409d01:	75 49                	jne    0x409d4c
409d03:	89 0d b0 d4 40 00    	mov    %ecx,0x40d4b0
409d09:	68 d0 13 40 00       	push   $0x4013d0
409d0e:	68 b8 13 40 00       	push   $0x4013b8
409d13:	e8 cd 0a 00 00       	call   0x40a7e5
409d18:	59                   	pop    %ecx
409d19:	59                   	pop    %ecx
409d1a:	85 c0                	test   %eax,%eax
409d1c:	74 11                	je     0x409d2f
409d1e:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409d25:	b8 ff 00 00 00       	mov    $0xff,%eax
409d2a:	e9 ef 00 00 00       	jmp    0x409e1e
409d2f:	68 b4 13 40 00       	push   $0x4013b4
409d34:	68 90 13 40 00       	push   $0x401390
409d39:	e8 a1 0a 00 00       	call   0x40a7df
409d3e:	59                   	pop    %ecx
409d3f:	59                   	pop    %ecx
409d40:	c7 05 b0 d4 40 00 02 	movl   $0x2,0x40d4b0
409d47:	00 00 00
409d4a:	eb 05                	jmp    0x409d51
409d4c:	8a d9                	mov    %cl,%bl
409d4e:	88 5d e7             	mov    %bl,-0x19(%ebp)
409d51:	ff 75 dc             	push   -0x24(%ebp)
409d54:	e8 49 04 00 00       	call   0x40a1a2
409d59:	59                   	pop    %ecx
409d5a:	e8 11 06 00 00       	call   0x40a370
409d5f:	8b f0                	mov    %eax,%esi
409d61:	33 ff                	xor    %edi,%edi
409d63:	39 3e                	cmp    %edi,(%esi)
409d65:	74 1b                	je     0x409d82
409d67:	56                   	push   %esi
409d68:	e8 a1 03 00 00       	call   0x40a10e
409d6d:	59                   	pop    %ecx
409d6e:	84 c0                	test   %al,%al
409d70:	74 10                	je     0x409d82
409d72:	8b 36                	mov    (%esi),%esi
409d74:	57                   	push   %edi
409d75:	6a 02                	push   $0x2
409d77:	57                   	push   %edi
409d78:	8b ce                	mov    %esi,%ecx
409d7a:	ff 15 f0 e1 40 00    	call   *0x40e1f0
409d80:	ff d6                	call   *%esi
409d82:	e8 ef 05 00 00       	call   0x40a376
409d87:	8b f0                	mov    %eax,%esi
409d89:	39 3e                	cmp    %edi,(%esi)
409d8b:	74 13                	je     0x409da0
409d8d:	56                   	push   %esi
409d8e:	e8 7b 03 00 00       	call   0x40a10e
409d93:	59                   	pop    %ecx
409d94:	84 c0                	test   %al,%al
409d96:	74 08                	je     0x409da0
409d98:	ff 36                	push   (%esi)
409d9a:	e8 52 0a 00 00       	call   0x40a7f1
409d9f:	59                   	pop    %ecx
409da0:	e8 b8 0a 00 00       	call   0x40a85d
409da5:	8b f8                	mov    %eax,%edi
409da7:	e8 57 0a 00 00       	call   0x40a803
409dac:	8b 30                	mov    (%eax),%esi
409dae:	e8 4a 0a 00 00       	call   0x40a7fd
409db3:	57                   	push   %edi
409db4:	56                   	push   %esi
409db5:	ff 30                	push   (%eax)
409db7:	e8 d6 a3 ff ff       	call   0x404192
409dbc:	83 c4 0c             	add    $0xc,%esp
409dbf:	8b f0                	mov    %eax,%esi
409dc1:	e8 d8 06 00 00       	call   0x40a49e
409dc6:	84 c0                	test   %al,%al
409dc8:	74 6b                	je     0x409e35
409dca:	84 db                	test   %bl,%bl
409dcc:	75 05                	jne    0x409dd3
409dce:	e8 66 0a 00 00       	call   0x40a839
409dd3:	6a 00                	push   $0x0
409dd5:	6a 01                	push   $0x1
409dd7:	e8 e5 03 00 00       	call   0x40a1c1
409ddc:	59                   	pop    %ecx
409ddd:	59                   	pop    %ecx
409dde:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409de5:	8b c6                	mov    %esi,%eax
409de7:	eb 35                	jmp    0x409e1e
409de9:	8b 4d ec             	mov    -0x14(%ebp),%ecx
409dec:	8b 01                	mov    (%ecx),%eax
409dee:	8b 00                	mov    (%eax),%eax
409df0:	89 45 e0             	mov    %eax,-0x20(%ebp)
409df3:	51                   	push   %ecx
409df4:	50                   	push   %eax
409df5:	e8 81 0a 00 00       	call   0x40a87b
409dfa:	59                   	pop    %ecx
409dfb:	59                   	pop    %ecx
409dfc:	c3                   	ret
409dfd:	8b 65 e8             	mov    -0x18(%ebp),%esp
409e00:	e8 99 06 00 00       	call   0x40a49e
409e05:	84 c0                	test   %al,%al
409e07:	74 32                	je     0x409e3b
409e09:	80 7d e7 00          	cmpb   $0x0,-0x19(%ebp)
409e0d:	75 05                	jne    0x409e14
409e0f:	e8 d7 09 00 00       	call   0x40a7eb
409e14:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
409e1b:	8b 45 e0             	mov    -0x20(%ebp),%eax
409e1e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
409e21:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
409e28:	59                   	pop    %ecx
409e29:	5f                   	pop    %edi
409e2a:	5e                   	pop    %esi
409e2b:	5b                   	pop    %ebx
409e2c:	c9                   	leave
409e2d:	c3                   	ret
409e2e:	6a 07                	push   $0x7
409e30:	e8 47 05 00 00       	call   0x40a37c
409e35:	56                   	push   %esi
409e36:	e8 58 0a 00 00       	call   0x40a893
409e3b:	ff 75 e0             	push   -0x20(%ebp)
409e3e:	e8 14 0a 00 00       	call   0x40a857
409e43:	cc                   	int3
409e44:	cc                   	int3
409e45:	cc                   	int3
409e46:	cc                   	int3
409e47:	cc                   	int3
409e48:	cc                   	int3
409e49:	cc                   	int3
409e4a:	cc                   	int3
409e4b:	cc                   	int3
409e4c:	cc                   	int3