409cc5:	e8 c9 fd ff ff       	call   0x409a93
409cca:	8b 45 f8             	mov    -0x8(%ebp),%eax
409ccd:	83 c4 0c             	add    $0xc,%esp
409cd0:	48                   	dec    %eax
409cd1:	a3 5c 32 41 00       	mov    %eax,0x41325c
409cd6:	89 35 60 32 41 00    	mov    %esi,0x413260
409cdc:	33 c0                	xor    %eax,%eax
409cde:	eb 03                	jmp    0x409ce3
409ce0:	83 c8 ff             	or     $0xffffffff,%eax
409ce3:	5f                   	pop    %edi
409ce4:	5e                   	pop    %esi
409ce5:	5b                   	pop    %ebx
409ce6:	c9                   	leave
409ce7:	c3                   	ret
409ce8:	8b ff                	mov    %edi,%edi
409cea:	55                   	push   %ebp
409ceb:	8b ec                	mov    %esp,%ebp
409ced:	83 ec 0c             	sub    $0xc,%esp
409cf0:	53                   	push   %ebx
409cf1:	56                   	push   %esi
409cf2:	ff 15 08 f1 40 00    	call   *0x40f108
409cf8:	8b d8                	mov    %eax,%ebx
409cfa:	33 f6                	xor    %esi,%esi
409cfc:	3b de                	cmp    %esi,%ebx
409cfe:	75 04                	jne    0x409d04
409d00:	33 c0                	xor    %eax,%eax
409d02:	eb 77                	jmp    0x409d7b
409d04:	66 39 33             	cmp    %si,(%ebx)
409d07:	74 10                	je     0x409d19
409d09:	83 c0 02             	add    $0x2,%eax
409d0c:	66 39 30             	cmp    %si,(%eax)
409d0f:	75 f8                	jne    0x409d09
409d11:	83 c0 02             	add    $0x2,%eax
409d14:	66 39 30             	cmp    %si,(%eax)
409d17:	75 f0                	jne    0x409d09
409d19:	57                   	push   %edi
409d1a:	8b 3d 10 f1 40 00    	mov    0x40f110,%edi
409d20:	56                   	push   %esi
409d21:	56                   	push   %esi
409d22:	56                   	push   %esi
409d23:	2b c3                	sub    %ebx,%eax
409d25:	56                   	push   %esi
409d26:	d1 f8                	sar    $1,%eax
409d28:	40                   	inc    %eax
409d29:	50                   	push   %eax
409d2a:	53                   	push   %ebx
409d2b:	56                   	push   %esi
409d2c:	56                   	push   %esi
409d2d:	89 45 f4             	mov    %eax,-0xc(%ebp)
409d30:	ff d7                	call   *%edi
409d32:	89 45 f8             	mov    %eax,-0x8(%ebp)
409d35:	3b c6                	cmp    %esi,%eax
409d37:	74 38                	je     0x409d71
409d39:	50                   	push   %eax
409d3a:	e8 80 cb ff ff       	call   0x4068bf
409d3f:	59                   	pop    %ecx
409d40:	89 45 fc             	mov    %eax,-0x4(%ebp)
409d43:	3b c6                	cmp    %esi,%eax
409d45:	74 2a                	je     0x409d71
409d47:	56                   	push   %esi
409d48:	56                   	push   %esi
409d49:	ff 75 f8             	push   -0x8(%ebp)
409d4c:	50                   	push   %eax
409d4d:	ff 75 f4             	push   -0xc(%ebp)
409d50:	53                   	push   %ebx
409d51:	56                   	push   %esi
409d52:	56                   	push   %esi
409d53:	ff d7                	call   *%edi
409d55:	85 c0                	test   %eax,%eax
409d57:	75 0c                	jne    0x409d65
409d59:	ff 75 fc             	push   -0x4(%ebp)
409d5c:	e8 0a 82 ff ff       	call   0x401f6b
409d61:	59                   	pop    %ecx
409d62:	89 75 fc             	mov    %esi,-0x4(%ebp)
409d65:	53                   	push   %ebx
409d66:	ff 15 04 f1 40 00    	call   *0x40f104
409d6c:	8b 45 fc             	mov    -0x4(%ebp),%eax
409d6f:	eb 09                	jmp    0x409d7a
409d71:	53                   	push   %ebx
409d72:	ff 15 04 f1 40 00    	call   *0x40f104
409d78:	33 c0                	xor    %eax,%eax
409d7a:	5f                   	pop    %edi
409d7b:	5e                   	pop    %esi
409d7c:	5b                   	pop    %ebx
409d7d:	c9                   	leave
409d7e:	c3                   	ret
409d7f:	8b ff                	mov    %edi,%edi
409d81:	56                   	push   %esi
409d82:	b8 40 10 41 00       	mov    $0x411040,%eax
409d87:	be 40 10 41 00       	mov    $0x411040,%esi
409d8c:	57                   	push   %edi
409d8d:	8b f8                	mov    %eax,%edi
409d8f:	3b c6                	cmp    %esi,%eax
409d91:	73 0f                	jae    0x409da2
409d93:	8b 07                	mov    (%edi),%eax
409d95:	85 c0                	test   %eax,%eax
409d97:	74 02                	je     0x409d9b
409d99:	ff d0                	call   *%eax
409d9b:	83 c7 04             	add    $0x4,%edi
409d9e:	3b fe                	cmp    %esi,%edi
409da0:	72 f1                	jb     0x409d93
409da2:	5f                   	pop    %edi
409da3:	5e                   	pop    %esi
409da4:	c3                   	ret
409da5:	8b ff                	mov    %edi,%edi
409da7:	56                   	push   %esi
409da8:	b8 48 10 41 00       	mov    $0x411048,%eax
409dad:	be 48 10 41 00       	mov    $0x411048,%esi
409db2:	57                   	push   %edi
409db3:	8b f8                	mov    %eax,%edi
409db5:	3b c6                	cmp    %esi,%eax
409db7:	73 0f                	jae    0x409dc8
409db9:	8b 07                	mov    (%edi),%eax
409dbb:	85 c0                	test   %eax,%eax
409dbd:	74 02                	je     0x409dc1
409dbf:	ff d0                	call   *%eax
409dc1:	83 c7 04             	add    $0x4,%edi
409dc4:	3b fe                	cmp    %esi,%edi
409dc6:	72 f1                	jb     0x409db9
409dc8:	5f                   	pop    %edi
409dc9:	5e                   	pop    %esi
409dca:	c3                   	ret
409dcb:	8b ff                	mov    %edi,%edi
409dcd:	55                   	push   %ebp
409dce:	8b ec                	mov    %esp,%ebp
409dd0:	83 ec 10             	sub    $0x10,%esp
409dd3:	a1 84 22 41 00       	mov    0x412284,%eax
409dd8:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
409ddc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409de0:	53                   	push   %ebx
409de1:	57                   	push   %edi
409de2:	bf 4e e6 40 bb       	mov    $0xbb40e64e,%edi
409de7:	bb 00 00 ff ff       	mov    $0xffff0000,%ebx
409dec:	3b c7                	cmp    %edi,%eax
409dee:	74 0d                	je     0x409dfd
409df0:	85 c3                	test   %eax,%ebx
409df2:	74 09                	je     0x409dfd
409df4:	f7 d0                	not    %eax
409df6:	a3 88 22 41 00       	mov    %eax,0x412288
409dfb:	eb 65                	jmp    0x409e62
409dfd:	56                   	push   %esi
409dfe:	8d 45 f8             	lea    -0x8(%ebp),%eax
409e01:	50                   	push   %eax
409e02:	ff 15 20 f1 40 00    	call   *0x40f120
409e08:	8b 75 fc             	mov    -0x4(%ebp),%esi
409e0b:	33 75 f8             	xor    -0x8(%ebp),%esi
409e0e:	ff 15 1c f1 40 00    	call   *0x40f11c
409e14:	33 f0                	xor    %eax,%esi
409e16:	ff 15 e0 f0 40 00    	call   *0x40f0e0
409e1c:	33 f0                	xor    %eax,%esi
409e1e:	ff 15 18 f1 40 00    	call   *0x40f118
409e24:	33 f0                	xor    %eax,%esi
409e26:	8d 45 f0             	lea    -0x10(%ebp),%eax
409e29:	50                   	push   %eax
409e2a:	ff 15 14 f1 40 00    	call   *0x40f114
409e30:	8b 45 f4             	mov    -0xc(%ebp),%eax
409e33:	33 45 f0             	xor    -0x10(%ebp),%eax
409e36:	33 f0                	xor    %eax,%esi
409e38:	3b f7                	cmp    %edi,%esi
409e3a:	75 07                	jne    0x409e43
409e3c:	be 4f e6 40 bb       	mov    $0xbb40e64f,%esi
409e41:	eb 10                	jmp    0x409e53
409e43:	85 f3                	test   %esi,%ebx
409e45:	75 0c                	jne    0x409e53
409e47:	8b c6                	mov    %esi,%eax
409e49:	0d 11 47 00 00       	or     $0x4711,%eax
409e4e:	c1 e0 10             	shl    $0x10,%eax
409e51:	0b f0                	or     %eax,%esi
409e53:	89 35 84 22 41 00    	mov    %esi,0x412284
409e59:	f7 d6                	not    %esi
409e5b:	89 35 88 22 41 00    	mov    %esi,0x412288
409e61:	5e                   	pop    %esi
409e62:	5f                   	pop    %edi
409e63:	5b                   	pop    %ebx
409e64:	c9                   	leave
409e65:	c3                   	ret
409e66:	8b ff                	mov    %edi,%edi
409e68:	55                   	push   %ebp
409e69:	8b ec                	mov    %esp,%ebp
409e6b:	83 ec 34             	sub    $0x34,%esp
409e6e:	53                   	push   %ebx
409e6f:	33 db                	xor    %ebx,%ebx
409e71:	f6 45 10 80          	testb  $0x80,0x10(%ebp)
409e75:	56                   	push   %esi
409e76:	8b f0                	mov    %eax,%esi
409e78:	89 5d dc             	mov    %ebx,-0x24(%ebp)
409e7b:	88 5d fe             	mov    %bl,-0x2(%ebp)
409e7e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
409e81:	c7 45 cc 0c 00 00 00 	movl   $0xc,-0x34(%ebp)
409e88:	89 5d d0             	mov    %ebx,-0x30(%ebp)
409e8b:	74 09                	je     0x409e96
409e8d:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
409e90:	c6 45 ff 10          	movb   $0x10,-0x1(%ebp)
409e94:	eb 0a                	jmp    0x409ea0
409e96:	c7 45 d4 01 00 00 00 	movl   $0x1,-0x2c(%ebp)
409e9d:	88 5d ff             	mov    %bl,-0x1(%ebp)
409ea0:	8d 45 dc             	lea    -0x24(%ebp),%eax
409ea3:	50                   	push   %eax
409ea4:	e8 ea 43 00 00       	call   0x40e293
409ea9:	59                   	pop    %ecx
409eaa:	85 c0                	test   %eax,%eax
409eac:	0f 85 de 06 00 00    	jne    0x40a590
409eb2:	b8 00 80 00 00       	mov    $0x8000,%eax
409eb7:	85 45 10             	test   %eax,0x10(%ebp)
409eba:	75 12                	jne    0x409ece
409ebc:	f7 45 10 00 40 07 00 	testl  $0x74000,0x10(%ebp)
409ec3:	75 05                	jne    0x409eca
409ec5:	39 45 dc             	cmp    %eax,-0x24(%ebp)
409ec8:	74 04                	je     0x409ece
409eca:	80 4d ff 80          	orb    $0x80,-0x1(%ebp)
409ece:	8b 45 10             	mov    0x10(%ebp),%eax
409ed1:	83 e0 03             	and    $0x3,%eax
409ed4:	2b c3                	sub    %ebx,%eax
409ed6:	b9 00 00 00 c0       	mov    $0xc0000000,%ecx
409edb:	ba 00 00 00 80       	mov    $0x80000000,%edx
409ee0:	74 43                	je     0x409f25
409ee2:	48                   	dec    %eax
409ee3:	74 28                	je     0x409f0d
409ee5:	48                   	dec    %eax
409ee6:	74 20                	je     0x409f08
409ee8:	e8 4d a2 ff ff       	call   0x40413a
409eed:	89 18                	mov    %ebx,(%eax)
409eef:	83 0e ff             	orl    $0xffffffff,(%esi)
409ef2:	e8 30 a2 ff ff       	call   0x404127
409ef7:	6a 16                	push   $0x16
409ef9:	5e                   	pop    %esi
409efa:	89 30                	mov    %esi,(%eax)
409efc:	e8 86 8d ff ff       	call   0x402c87
409f01:	8b c6                	mov    %esi,%eax
409f03:	e9 de 00 00 00       	jmp    0x409fe6
409f08:	89 4d f4             	mov    %ecx,-0xc(%ebp)
409f0b:	eb 1b                	jmp    0x409f28
409f0d:	f6 45 10 08          	testb  $0x8,0x10(%ebp)
409f11:	74 09                	je     0x409f1c
409f13:	f7 45 10 00 00 07 00 	testl  $0x70000,0x10(%ebp)
409f1a:	75 ec                	jne    0x409f08
409f1c:	c7 45 f4 00 00 00 40 	movl   $0x40000000,-0xc(%ebp)
409f23:	eb 03                	jmp    0x409f28
409f25:	89 55 f4             	mov    %edx,-0xc(%ebp)
409f28:	8b 45 14             	mov    0x14(%ebp),%eax
409f2b:	6a 10                	push   $0x10
409f2d:	59                   	pop    %ecx
409f2e:	2b c1                	sub    %ecx,%eax
409f30:	74 37                	je     0x409f69
409f32:	2b c1                	sub    %ecx,%eax
409f34:	74 2a                	je     0x409f60
409f36:	2b c1                	sub    %ecx,%eax
409f38:	74 1d                	je     0x409f57
409f3a:	2b c1                	sub    %ecx,%eax
409f3c:	74 10                	je     0x409f4e
409f3e:	83 e8 40             	sub    $0x40,%eax
409f41:	75 a5                	jne    0x409ee8
409f43:	39 55 f4             	cmp    %edx,-0xc(%ebp)
409f46:	0f 94 c0             	sete   %al
409f49:	89 45 ec             	mov    %eax,-0x14(%ebp)
409f4c:	eb 1e                	jmp    0x409f6c
409f4e:	c7 45 ec 03 00 00 00 	movl   $0x3,-0x14(%ebp)
409f55:	eb 15                	jmp    0x409f6c
409f57:	c7 45 ec 02 00 00 00 	movl   $0x2,-0x14(%ebp)
409f5e:	eb 0c                	jmp    0x409f6c
409f60:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
409f67:	eb 03                	jmp    0x409f6c
409f69:	89 5d ec             	mov    %ebx,-0x14(%ebp)
409f6c:	8b 45 10             	mov    0x10(%ebp),%eax
409f6f:	ba 00 07 00 00       	mov    $0x700,%edx
409f74:	23 c2                	and    %edx,%eax
409f76:	b9 00 04 00 00       	mov    $0x400,%ecx
409f7b:	57                   	push   %edi
409f7c:	bf 00 01 00 00       	mov    $0x100,%edi
409f81:	3b c1                	cmp    %ecx,%eax
409f83:	7f 33                	jg     0x409fb8
409f85:	74 28                	je     0x409faf
409f87:	3b c3                	cmp    %ebx,%eax
409f89:	74 24                	je     0x409faf
409f8b:	3b c7                	cmp    %edi,%eax
409f8d:	74 17                	je     0x409fa6
409f8f:	3d 00 02 00 00       	cmp    $0x200,%eax
409f94:	74 54                	je     0x409fea
409f96:	3d 00 03 00 00       	cmp    $0x300,%eax
409f9b:	75 2d                	jne    0x409fca
409f9d:	c7 45 e8 02 00 00 00 	movl   $0x2,-0x18(%ebp)
409fa4:	eb 54                	jmp    0x409ffa
409fa6:	c7 45 e8 04 00 00 00 	movl   $0x4,-0x18(%ebp)
409fad:	eb 4b                	jmp    0x409ffa
409faf:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
409fb6:	eb 42                	jmp    0x409ffa
409fb8:	3d 00 05 00 00       	cmp    $0x500,%eax
409fbd:	74 34                	je     0x409ff3
409fbf:	3d 00 06 00 00       	cmp    $0x600,%eax
409fc4:	74 24                	je     0x409fea
409fc6:	3b c2                	cmp    %edx,%eax
409fc8:	74 29                	je     0x409ff3
409fca:	e8 6b a1 ff ff       	call   0x40413a
409fcf:	89 18                	mov    %ebx,(%eax)
409fd1:	83 0e ff             	orl    $0xffffffff,(%esi)
409fd4:	e8 4e a1 ff ff       	call   0x404127
409fd9:	6a 16                	push   $0x16
409fdb:	5e                   	pop    %esi
409fdc:	89 30                	mov    %esi,(%eax)
409fde:	e8 a4 8c ff ff       	call   0x402c87
409fe3:	8b c6                	mov    %esi,%eax
409fe5:	5f                   	pop    %edi
409fe6:	5e                   	pop    %esi
409fe7:	5b                   	pop    %ebx
409fe8:	c9                   	leave
409fe9:	c3                   	ret
409fea:	c7 45 e8 05 00 00 00 	movl   $0x5,-0x18(%ebp)
409ff1:	eb 07                	jmp    0x409ffa
409ff3:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
409ffa:	8b 45 10             	mov    0x10(%ebp),%eax
409ffd:	c7 45 f0 80 00 00 00 	movl   $0x80,-0x10(%ebp)
40a004:	85 c7                	test   %eax,%edi
40a006:	74 16                	je     0x40a01e
40a008:	8b 0d 58 32 41 00    	mov    0x413258,%ecx
40a00e:	f7 d1                	not    %ecx
40a010:	23 4d 18             	and    0x18(%ebp),%ecx
40a013:	84 c9                	test   %cl,%cl
40a015:	78 07                	js     0x40a01e
40a017:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40a01e:	a8 40                	test   $0x40,%al
40a020:	74 12                	je     0x40a034
40a022:	81 4d f0 00 00 00 04 	orl    $0x4000000,-0x10(%ebp)
40a029:	81 4d f4 00 00 01 00 	orl    $0x10000,-0xc(%ebp)
40a030:	83 4d ec 04          	orl    $0x4,-0x14(%ebp)
40a034:	a9 00 10 00 00       	test   $0x1000,%eax
40a039:	74 03                	je     0x40a03e
40a03b:	09 7d f0             	or     %edi,-0x10(%ebp)
40a03e:	a8 20                	test   $0x20,%al
40a040:	74 09                	je     0x40a04b
40a042:	81 4d f0 00 00 00 08 	orl    $0x8000000,-0x10(%ebp)
40a049:	eb 0b                	jmp    0x40a056
40a04b:	a8 10                	test   $0x10,%al
40a04d:	74 07                	je     0x40a056
40a04f:	81 4d f0 00 00 00 10 	orl    $0x10000000,-0x10(%ebp)
40a056:	e8 49 91 ff ff       	call   0x4031a4
40a05b:	83 cb ff             	or     $0xffffffff,%ebx
40a05e:	89 06                	mov    %eax,(%esi)
40a060:	3b c3                	cmp    %ebx,%eax
40a062:	75 21                	jne    0x40a085
40a064:	e8 d1 a0 ff ff       	call   0x40413a
40a069:	83 20 00             	andl   $0x0,(%eax)
40a06c:	89 1e                	mov    %ebx,(%esi)
40a06e:	e8 b4 a0 ff ff       	call   0x404127
40a073:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
40a079:	e8 a9 a0 ff ff       	call   0x404127
40a07e:	8b 00                	mov    (%eax),%eax
40a080:	e9 60 ff ff ff       	jmp    0x409fe5
40a085:	8b 45 08             	mov    0x8(%ebp),%eax
40a088:	8b 3d 24 f1 40 00    	mov    0x40f124,%edi
40a08e:	6a 00                	push   $0x0