408a7f:	5f                   	pop    %edi
408a80:	66 3b d3             	cmp    %bx,%dx
408a83:	5e                   	pop    %esi
408a84:	0f 44 c1             	cmove  %ecx,%eax
408a87:	5b                   	pop    %ebx
408a88:	5d                   	pop    %ebp
408a89:	c2 04 00             	ret    $0x4
408a8c:	5f                   	pop    %edi
408a8d:	5e                   	pop    %esi
408a8e:	66 8b c3             	mov    %bx,%ax
408a91:	5b                   	pop    %ebx
408a92:	5d                   	pop    %ebp
408a93:	c2 04 00             	ret    $0x4
408a96:	cc                   	int3
408a97:	cc                   	int3
408a98:	cc                   	int3
408a99:	cc                   	int3
408a9a:	cc                   	int3
408a9b:	cc                   	int3
408a9c:	cc                   	int3
408a9d:	cc                   	int3
408a9e:	cc                   	int3
408a9f:	cc                   	int3
408aa0:	55                   	push   %ebp
408aa1:	8b ec                	mov    %esp,%ebp
408aa3:	83 ec 08             	sub    $0x8,%esp
408aa6:	b8 ff ff 00 00       	mov    $0xffff,%eax
408aab:	53                   	push   %ebx
408aac:	56                   	push   %esi
408aad:	57                   	push   %edi
408aae:	8b f9                	mov    %ecx,%edi
408ab0:	f6 47 3c 02          	testb  $0x2,0x3c(%edi)
408ab4:	0f 85 b6 01 00 00    	jne    0x408c70
408aba:	66 3b 45 08          	cmp    0x8(%ebp),%ax
408abe:	75 0b                	jne    0x408acb
408ac0:	5f                   	pop    %edi
408ac1:	5e                   	pop    %esi
408ac2:	33 c0                	xor    %eax,%eax
408ac4:	5b                   	pop    %ebx
408ac5:	8b e5                	mov    %ebp,%esp
408ac7:	5d                   	pop    %ebp
408ac8:	c2 04 00             	ret    $0x4
408acb:	8b 47 20             	mov    0x20(%edi),%eax
408ace:	8b 57 30             	mov    0x30(%edi),%edx
408ad1:	8b 00                	mov    (%eax),%eax
408ad3:	8b 0a                	mov    (%edx),%ecx
408ad5:	89 45 fc             	mov    %eax,-0x4(%ebp)
408ad8:	8d 1c 48             	lea    (%eax,%ecx,2),%ebx
408adb:	85 c0                	test   %eax,%eax
408add:	0f 84 9d 00 00 00    	je     0x408b80
408ae3:	3b c3                	cmp    %ebx,%eax
408ae5:	73 26                	jae    0x408b0d
408ae7:	66 8b 45 08          	mov    0x8(%ebp),%ax
408aeb:	49                   	dec    %ecx
408aec:	89 0a                	mov    %ecx,(%edx)
408aee:	8b 57 20             	mov    0x20(%edi),%edx
408af1:	8b 32                	mov    (%edx),%esi
408af3:	8d 4e 02             	lea    0x2(%esi),%ecx
408af6:	89 0a                	mov    %ecx,(%edx)
408af8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408afb:	66 89 06             	mov    %ax,(%esi)
408afe:	83 c1 02             	add    $0x2,%ecx
408b01:	89 4f 38             	mov    %ecx,0x38(%edi)
408b04:	5f                   	pop    %edi
408b05:	5e                   	pop    %esi
408b06:	5b                   	pop    %ebx
408b07:	8b e5                	mov    %ebp,%esp
408b09:	5d                   	pop    %ebp
408b0a:	c2 04 00             	ret    $0x4
408b0d:	8b 47 0c             	mov    0xc(%edi),%eax
408b10:	8b 30                	mov    (%eax),%esi
408b12:	2b de                	sub    %esi,%ebx
408b14:	d1 fb                	sar    $1,%ebx
408b16:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408b19:	83 fb 20             	cmp    $0x20,%ebx
408b1c:	72 6e                	jb     0x408b8c
408b1e:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx
408b24:	73 49                	jae    0x408b6f
408b26:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
408b29:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
408b2e:	0f 87 45 01 00 00    	ja     0x408c79
408b34:	03 c0                	add    %eax,%eax
408b36:	89 45 f8             	mov    %eax,-0x8(%ebp)
408b39:	3d 00 10 00 00       	cmp    $0x1000,%eax
408b3e:	72 27                	jb     0x408b67
408b40:	8d 48 23             	lea    0x23(%eax),%ecx
408b43:	3b c8                	cmp    %eax,%ecx
408b45:	0f 86 2e 01 00 00    	jbe    0x408c79
408b4b:	51                   	push   %ecx
408b4c:	e8 8d 2d 01 00       	call   0x41b8de
408b51:	83 c4 04             	add    $0x4,%esp
408b54:	85 c0                	test   %eax,%eax
408b56:	0f 84 22 01 00 00    	je     0x408c7e
408b5c:	8d 58 23             	lea    0x23(%eax),%ebx
408b5f:	83 e3 e0             	and    $0xffffffe0,%ebx
408b62:	89 43 fc             	mov    %eax,-0x4(%ebx)
408b65:	eb 38                	jmp    0x408b9f
408b67:	85 c0                	test   %eax,%eax
408b69:	75 29                	jne    0x408b94
408b6b:	33 db                	xor    %ebx,%ebx
408b6d:	eb 30                	jmp    0x408b9f
408b6f:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
408b75:	0f 82 fe 00 00 00    	jb     0x408c79
408b7b:	e9 eb 00 00 00       	jmp    0x408c6b
408b80:	8b 47 0c             	mov    0xc(%edi),%eax
408b83:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
408b8a:	8b 30                	mov    (%eax),%esi
408b8c:	b8 40 00 00 00       	mov    $0x40,%eax
408b91:	89 45 f8             	mov    %eax,-0x8(%ebp)
408b94:	50                   	push   %eax
408b95:	e8 44 2d 01 00       	call   0x41b8de
408b9a:	83 c4 04             	add    $0x4,%esp
408b9d:	8b d8                	mov    %eax,%ebx
408b9f:	8b 45 fc             	mov    -0x4(%ebp),%eax
408ba2:	03 c0                	add    %eax,%eax
408ba4:	50                   	push   %eax
408ba5:	56                   	push   %esi
408ba6:	53                   	push   %ebx
408ba7:	89 45 fc             	mov    %eax,-0x4(%ebp)
408baa:	e8 a1 48 01 00       	call   0x41d450
408baf:	8b 55 fc             	mov    -0x4(%ebp),%edx
408bb2:	83 c4 0c             	add    $0xc,%esp
408bb5:	8d 0c 1a             	lea    (%edx,%ebx,1),%ecx
408bb8:	8d 41 02             	lea    0x2(%ecx),%eax
408bbb:	89 47 38             	mov    %eax,0x38(%edi)
408bbe:	8b 47 10             	mov    0x10(%edi),%eax
408bc1:	89 18                	mov    %ebx,(%eax)
408bc3:	8b 47 20             	mov    0x20(%edi),%eax
408bc6:	89 08                	mov    %ecx,(%eax)
408bc8:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bcb:	2b c1                	sub    %ecx,%eax
408bcd:	03 c3                	add    %ebx,%eax
408bcf:	d1 f8                	sar    $1,%eax
408bd1:	89 45 f8             	mov    %eax,-0x8(%ebp)
408bd4:	8b 47 30             	mov    0x30(%edi),%eax
408bd7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408bda:	89 08                	mov    %ecx,(%eax)
408bdc:	f6 47 3c 04          	testb  $0x4,0x3c(%edi)
408be0:	74 17                	je     0x408bf9
408be2:	8b 47 0c             	mov    0xc(%edi),%eax
408be5:	89 18                	mov    %ebx,(%eax)
408be7:	8b 47 1c             	mov    0x1c(%edi),%eax
408bea:	d1 fb                	sar    $1,%ebx
408bec:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408bf2:	8b 47 2c             	mov    0x2c(%edi),%eax
408bf5:	89 18                	mov    %ebx,(%eax)
408bf7:	eb 25                	jmp    0x408c1e
408bf9:	8b 47 1c             	mov    0x1c(%edi),%eax
408bfc:	8b 57 38             	mov    0x38(%edi),%edx
408bff:	8b 00                	mov    (%eax),%eax
408c01:	2b c6                	sub    %esi,%eax
408c03:	d1 f8                	sar    $1,%eax
408c05:	8d 0c 43             	lea    (%ebx,%eax,2),%ecx
408c08:	8b 47 0c             	mov    0xc(%edi),%eax
408c0b:	2b d1                	sub    %ecx,%edx
408c0d:	d1 fa                	sar    $1,%edx
408c0f:	89 18                	mov    %ebx,(%eax)
408c11:	8b 47 1c             	mov    0x1c(%edi),%eax
408c14:	89 08                	mov    %ecx,(%eax)
408c16:	8b 47 2c             	mov    0x2c(%edi),%eax
408c19:	89 10                	mov    %edx,(%eax)
408c1b:	8b 55 fc             	mov    -0x4(%ebp),%edx
408c1e:	f6 47 3c 01          	testb  $0x1,0x3c(%edi)
408c22:	74 24                	je     0x408c48
408c24:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
408c2a:	72 12                	jb     0x408c3e
408c2c:	8b 4e fc             	mov    -0x4(%esi),%ecx
408c2f:	83 c2 23             	add    $0x23,%edx
408c32:	2b f1                	sub    %ecx,%esi
408c34:	8d 46 fc             	lea    -0x4(%esi),%eax
408c37:	83 f8 1f             	cmp    $0x1f,%eax
408c3a:	77 42                	ja     0x408c7e
408c3c:	8b f1                	mov    %ecx,%esi
408c3e:	52                   	push   %edx
408c3f:	56                   	push   %esi
408c40:	e8 c9 2c 01 00       	call   0x41b90e
408c45:	83 c4 08             	add    $0x8,%esp
408c48:	8b 47 30             	mov    0x30(%edi),%eax
408c4b:	83 4f 3c 01          	orl    $0x1,0x3c(%edi)
408c4f:	ff 08                	decl   (%eax)
408c51:	8b 4f 20             	mov    0x20(%edi),%ecx
408c54:	5f                   	pop    %edi
408c55:	5e                   	pop    %esi
408c56:	5b                   	pop    %ebx
408c57:	8b 11                	mov    (%ecx),%edx
408c59:	8d 42 02             	lea    0x2(%edx),%eax
408c5c:	89 01                	mov    %eax,(%ecx)
408c5e:	66 8b 45 08          	mov    0x8(%ebp),%ax
408c62:	66 89 02             	mov    %ax,(%edx)
408c65:	8b e5                	mov    %ebp,%esp
408c67:	5d                   	pop    %ebp
408c68:	c2 04 00             	ret    $0x4
408c6b:	b8 ff ff 00 00       	mov    $0xffff,%eax
408c70:	5f                   	pop    %edi
408c71:	5e                   	pop    %esi
408c72:	5b                   	pop    %ebx
408c73:	8b e5                	mov    %ebp,%esp
408c75:	5d                   	pop    %ebp
408c76:	c2 04 00             	ret    $0x4
408c79:	e8 82 85 ff ff       	call   0x401200
408c7e:	e8 fc 7d 01 00       	call   0x420a7f
408c83:	cc                   	int3
408c84:	cc                   	int3
408c85:	cc                   	int3
408c86:	cc                   	int3
408c87:	cc                   	int3
408c88:	cc                   	int3
408c89:	cc                   	int3
408c8a:	cc                   	int3
408c8b:	cc                   	int3
408c8c:	cc                   	int3
408c8d:	cc                   	int3
408c8e:	cc                   	int3
408c8f:	cc                   	int3
408c90:	53                   	push   %ebx
408c91:	56                   	push   %esi
408c92:	8b f1                	mov    %ecx,%esi
408c94:	f6 46 3c 01          	testb  $0x1,0x3c(%esi)
408c98:	c7 06 10 dd 44 00    	movl   $0x44dd10,(%esi)
408c9e:	74 52                	je     0x408cf2
408ca0:	8b 46 20             	mov    0x20(%esi),%eax
408ca3:	8b 08                	mov    (%eax),%ecx
408ca5:	85 c9                	test   %ecx,%ecx
408ca7:	74 0a                	je     0x408cb3
408ca9:	8b 46 30             	mov    0x30(%esi),%eax
408cac:	8b 00                	mov    (%eax),%eax
408cae:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
408cb1:	eb 0d                	jmp    0x408cc0
408cb3:	8b 46 2c             	mov    0x2c(%esi),%eax
408cb6:	8b 08                	mov    (%eax),%ecx
408cb8:	8b 46 1c             	mov    0x1c(%esi),%eax
408cbb:	8b 00                	mov    (%eax),%eax
408cbd:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
408cc0:	8b 46 0c             	mov    0xc(%esi),%eax
408cc3:	8b 00                	mov    (%eax),%eax
408cc5:	2b c8                	sub    %eax,%ecx
408cc7:	83 e1 fe             	and    $0xfffffffe,%ecx
408cca:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
408cd0:	72 16                	jb     0x408ce8
408cd2:	8b 50 fc             	mov    -0x4(%eax),%edx
408cd5:	83 c1 23             	add    $0x23,%ecx
408cd8:	2b c2                	sub    %edx,%eax
408cda:	83 c0 fc             	add    $0xfffffffc,%eax
408cdd:	83 f8 1f             	cmp    $0x1f,%eax
408ce0:	0f 87 9a 00 00 00    	ja     0x408d80
408ce6:	8b c2                	mov    %edx,%eax
408ce8:	51                   	push   %ecx
408ce9:	50                   	push   %eax
408cea:	e8 1f 2c 01 00       	call   0x41b90e
408cef:	83 c4 08             	add    $0x8,%esp
408cf2:	8b 46 0c             	mov    0xc(%esi),%eax
408cf5:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408cfb:	8b 46 1c             	mov    0x1c(%esi),%eax
408cfe:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408d04:	8b 46 2c             	mov    0x2c(%esi),%eax
408d07:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408d0d:	8b 46 10             	mov    0x10(%esi),%eax
408d10:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408d16:	8b 46 20             	mov    0x20(%esi),%eax
408d19:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408d1f:	8b 46 30             	mov    0x30(%esi),%eax
408d22:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
408d28:	83 66 3c fe          	andl   $0xfffffffe,0x3c(%esi)
408d2c:	8b 5e 34             	mov    0x34(%esi),%ebx
408d2f:	c7 46 38 00 00 00 00 	movl   $0x0,0x38(%esi)
408d36:	c7 06 50 dd 44 00    	movl   $0x44dd50,(%esi)
408d3c:	85 db                	test   %ebx,%ebx
408d3e:	74 3d                	je     0x408d7d
408d40:	57                   	push   %edi
408d41:	8b 7b 04             	mov    0x4(%ebx),%edi
408d44:	85 ff                	test   %edi,%edi
408d46:	74 29                	je     0x408d71
408d48:	8b 07                	mov    (%edi),%eax
408d4a:	8b 70 08             	mov    0x8(%eax),%esi
408d4d:	8b ce                	mov    %esi,%ecx
408d4f:	ff 15 3c f2 43 00    	call   *0x43f23c
408d55:	8b cf                	mov    %edi,%ecx
408d57:	ff d6                	call   *%esi
408d59:	8b f8                	mov    %eax,%edi
408d5b:	85 ff                	test   %edi,%edi
408d5d:	74 12                	je     0x408d71
408d5f:	8b 0f                	mov    (%edi),%ecx
408d61:	6a 01                	push   $0x1
408d63:	8b 31                	mov    (%ecx),%esi
408d65:	8b ce                	mov    %esi,%ecx
408d67:	ff 15 3c f2 43 00    	call   *0x43f23c
408d6d:	8b cf                	mov    %edi,%ecx
408d6f:	ff d6                	call   *%esi
408d71:	6a 08                	push   $0x8
408d73:	53                   	push   %ebx
408d74:	e8 95 2b 01 00       	call   0x41b90e
408d79:	83 c4 08             	add    $0x8,%esp
408d7c:	5f                   	pop    %edi
408d7d:	5e                   	pop    %esi
408d7e:	5b                   	pop    %ebx
408d7f:	c3                   	ret
408d80:	e8 fa 7c 01 00       	call   0x420a7f
408d85:	cc                   	int3
408d86:	cc                   	int3
408d87:	cc                   	int3
408d88:	cc                   	int3
408d89:	cc                   	int3
408d8a:	cc                   	int3
408d8b:	cc                   	int3
408d8c:	cc                   	int3
408d8d:	cc                   	int3
408d8e:	cc                   	int3
408d8f:	cc                   	int3
408d90:	c2 04 00             	ret    $0x4
408d93:	cc                   	int3
408d94:	cc                   	int3
408d95:	cc                   	int3
408d96:	cc                   	int3
408d97:	cc                   	int3
408d98:	cc                   	int3
408d99:	cc                   	int3
408d9a:	cc                   	int3
408d9b:	cc                   	int3
408d9c:	cc                   	int3
408d9d:	cc                   	int3
408d9e:	cc                   	int3
408d9f:	cc                   	int3
408da0:	33 c0                	xor    %eax,%eax
408da2:	c3                   	ret
408da3:	cc                   	int3
408da4:	cc                   	int3
408da5:	cc                   	int3
408da6:	cc                   	int3
408da7:	cc                   	int3
408da8:	cc                   	int3
408da9:	cc                   	int3
408daa:	cc                   	int3
408dab:	cc                   	int3
408dac:	cc                   	int3
408dad:	cc                   	int3
408dae:	cc                   	int3
408daf:	cc                   	int3
408db0:	8b c1                	mov    %ecx,%eax
408db2:	c2 0c 00             	ret    $0xc
408db5:	cc                   	int3
408db6:	cc                   	int3
408db7:	cc                   	int3
408db8:	cc                   	int3
408db9:	cc                   	int3
408dba:	cc                   	int3
408dbb:	cc                   	int3
408dbc:	cc                   	int3
408dbd:	cc                   	int3
408dbe:	cc                   	int3
408dbf:	cc                   	int3