407cea:	56                   	push   %esi
407ceb:	8d 4d e0             	lea    -0x20(%ebp),%ecx
407cee:	e8 41 ce ff ff       	call   0x404b34
407cf3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407cf7:	8d 5e 08             	lea    0x8(%esi),%ebx
407cfa:	8b 46 0c             	mov    0xc(%esi),%eax
407cfd:	8b 33                	mov    (%ebx),%esi
407cff:	89 45 f0             	mov    %eax,-0x10(%ebp)
407d02:	eb 15                	jmp    0x407d19
407d04:	8b 4e 04             	mov    0x4(%esi),%ecx
407d07:	85 c9                	test   %ecx,%ecx
407d09:	74 05                	je     0x407d10
407d0b:	8b 49 04             	mov    0x4(%ecx),%ecx
407d0e:	eb 02                	jmp    0x407d12
407d10:	33 c9                	xor    %ecx,%ecx
407d12:	85 c9                	test   %ecx,%ecx
407d14:	74 07                	je     0x407d1d
407d16:	83 c6 08             	add    $0x8,%esi
407d19:	3b f0                	cmp    %eax,%esi
407d1b:	75 e7                	jne    0x407d04
407d1d:	3b f0                	cmp    %eax,%esi
407d1f:	74 45                	je     0x407d66
407d21:	8d 7e 08             	lea    0x8(%esi),%edi
407d24:	eb 3c                	jmp    0x407d62
407d26:	8b 57 04             	mov    0x4(%edi),%edx
407d29:	85 d2                	test   %edx,%edx
407d2b:	74 05                	je     0x407d32
407d2d:	8b 4a 04             	mov    0x4(%edx),%ecx
407d30:	eb 02                	jmp    0x407d34
407d32:	33 c9                	xor    %ecx,%ecx
407d34:	85 c9                	test   %ecx,%ecx
407d36:	74 27                	je     0x407d5f
407d38:	8b 0f                	mov    (%edi),%ecx
407d3a:	83 27 00             	andl   $0x0,(%edi)
407d3d:	83 67 04 00          	andl   $0x0,0x4(%edi)
407d41:	8b 06                	mov    (%esi),%eax
407d43:	89 45 e8             	mov    %eax,-0x18(%ebp)
407d46:	8b 46 04             	mov    0x4(%esi),%eax
407d49:	89 0e                	mov    %ecx,(%esi)
407d4b:	8d 4d e8             	lea    -0x18(%ebp),%ecx
407d4e:	89 45 ec             	mov    %eax,-0x14(%ebp)
407d51:	89 56 04             	mov    %edx,0x4(%esi)
407d54:	e8 6f cf ff ff       	call   0x404cc8
407d59:	8b 45 f0             	mov    -0x10(%ebp),%eax
407d5c:	83 c6 08             	add    $0x8,%esi
407d5f:	83 c7 08             	add    $0x8,%edi
407d62:	3b f8                	cmp    %eax,%edi
407d64:	75 c0                	jne    0x407d26
407d66:	8b 7b 04             	mov    0x4(%ebx),%edi
407d69:	8b cf                	mov    %edi,%ecx
407d6b:	8b 13                	mov    (%ebx),%edx
407d6d:	2b f2                	sub    %edx,%esi
407d6f:	2b ca                	sub    %edx,%ecx
407d71:	c1 fe 03             	sar    $0x3,%esi
407d74:	c1 f9 03             	sar    $0x3,%ecx
407d77:	3b f1                	cmp    %ecx,%esi
407d79:	73 22                	jae    0x407d9d
407d7b:	8d 04 f2             	lea    (%edx,%esi,8),%eax
407d7e:	89 45 f0             	mov    %eax,-0x10(%ebp)
407d81:	8b f0                	mov    %eax,%esi
407d83:	3b c7                	cmp    %edi,%eax
407d85:	74 11                	je     0x407d98
407d87:	8b ce                	mov    %esi,%ecx
407d89:	e8 3a cf ff ff       	call   0x404cc8
407d8e:	83 c6 08             	add    $0x8,%esi
407d91:	3b f7                	cmp    %edi,%esi
407d93:	75 f2                	jne    0x407d87
407d95:	8b 45 f0             	mov    -0x10(%ebp),%eax
407d98:	89 43 04             	mov    %eax,0x4(%ebx)
407d9b:	eb 2f                	jmp    0x407dcc
407d9d:	76 2d                	jbe    0x407dcc
407d9f:	8b 43 08             	mov    0x8(%ebx),%eax
407da2:	2b c2                	sub    %edx,%eax
407da4:	c1 f8 03             	sar    $0x3,%eax
407da7:	3b f0                	cmp    %eax,%esi
407da9:	76 0b                	jbe    0x407db6
407dab:	51                   	push   %ecx
407dac:	56                   	push   %esi
407dad:	8b cb                	mov    %ebx,%ecx
407daf:	e8 cf 01 00 00       	call   0x407f83
407db4:	eb 16                	jmp    0x407dcc
407db6:	2b f1                	sub    %ecx,%esi
407db8:	74 0f                	je     0x407dc9
407dba:	83 27 00             	andl   $0x0,(%edi)
407dbd:	83 67 04 00          	andl   $0x0,0x4(%edi)
407dc1:	83 c7 08             	add    $0x8,%edi
407dc4:	83 ee 01             	sub    $0x1,%esi
407dc7:	75 f1                	jne    0x407dba
407dc9:	89 7b 04             	mov    %edi,0x4(%ebx)
407dcc:	8d 4d e0             	lea    -0x20(%ebp),%ecx
407dcf:	e8 31 cd ff ff       	call   0x404b05
407dd4:	e8 e1 2d 00 00       	call   0x40abba
407dd9:	c3                   	ret
407dda:	8b ff                	mov    %edi,%edi
407ddc:	55                   	push   %ebp
407ddd:	8b ec                	mov    %esp,%ebp
407ddf:	51                   	push   %ecx
407de0:	51                   	push   %ecx
407de1:	53                   	push   %ebx
407de2:	8b 5d 08             	mov    0x8(%ebp),%ebx
407de5:	56                   	push   %esi
407de6:	8b f1                	mov    %ecx,%esi
407de8:	57                   	push   %edi
407de9:	bf ff ff ff 1f       	mov    $0x1fffffff,%edi
407dee:	8b 46 04             	mov    0x4(%esi),%eax
407df1:	2b 06                	sub    (%esi),%eax
407df3:	2b 1e                	sub    (%esi),%ebx
407df5:	c1 f8 03             	sar    $0x3,%eax
407df8:	3b c7                	cmp    %edi,%eax
407dfa:	0f 84 85 00 00 00    	je     0x407e85
407e00:	40                   	inc    %eax
407e01:	50                   	push   %eax
407e02:	89 45 f8             	mov    %eax,-0x8(%ebp)
407e05:	e8 4e 01 00 00       	call   0x407f58
407e0a:	8b c8                	mov    %eax,%ecx
407e0c:	89 45 fc             	mov    %eax,-0x4(%ebp)
407e0f:	c1 e1 03             	shl    $0x3,%ecx
407e12:	3b c7                	cmp    %edi,%eax
407e14:	76 03                	jbe    0x407e19
407e16:	83 c9 ff             	or     $0xffffffff,%ecx
407e19:	e8 6d 00 00 00       	call   0x407e8b
407e1e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407e21:	8b f8                	mov    %eax,%edi
407e23:	83 e3 f8             	and    $0xfffffff8,%ebx
407e26:	83 24 3b 00          	andl   $0x0,(%ebx,%edi,1)
407e2a:	83 64 3b 04 00       	andl   $0x0,0x4(%ebx,%edi,1)
407e2f:	8b 41 04             	mov    0x4(%ecx),%eax
407e32:	85 c0                	test   %eax,%eax
407e34:	74 04                	je     0x407e3a
407e36:	f0 ff 40 08          	lock incl 0x8(%eax)
407e3a:	8b 01                	mov    (%ecx),%eax
407e3c:	89 04 3b             	mov    %eax,(%ebx,%edi,1)
407e3f:	8b 41 04             	mov    0x4(%ecx),%eax
407e42:	89 44 3b 04          	mov    %eax,0x4(%ebx,%edi,1)
407e46:	8b 56 04             	mov    0x4(%esi),%edx
407e49:	51                   	push   %ecx
407e4a:	8b 0e                	mov    (%esi),%ecx
407e4c:	57                   	push   %edi
407e4d:	39 55 08             	cmp    %edx,0x8(%ebp)
407e50:	74 15                	je     0x407e67
407e52:	8b 55 08             	mov    0x8(%ebp),%edx
407e55:	e8 a8 01 00 00       	call   0x408002
407e5a:	8b 56 04             	mov    0x4(%esi),%edx
407e5d:	8d 43 08             	lea    0x8(%ebx),%eax
407e60:	51                   	push   %ecx
407e61:	8b 4d 08             	mov    0x8(%ebp),%ecx
407e64:	03 c7                	add    %edi,%eax
407e66:	50                   	push   %eax
407e67:	e8 96 01 00 00       	call   0x408002
407e6c:	ff 75 fc             	push   -0x4(%ebp)
407e6f:	8b ce                	mov    %esi,%ecx
407e71:	ff 75 f8             	push   -0x8(%ebp)
407e74:	57                   	push   %edi
407e75:	e8 8a 00 00 00       	call   0x407f04
407e7a:	8b 06                	mov    (%esi),%eax
407e7c:	5f                   	pop    %edi
407e7d:	5e                   	pop    %esi
407e7e:	03 c3                	add    %ebx,%eax
407e80:	5b                   	pop    %ebx
407e81:	c9                   	leave
407e82:	c2 08 00             	ret    $0x8
407e85:	e8 6e 00 00 00       	call   0x407ef8
407e8a:	cc                   	int3
407e8b:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
407e91:	72 27                	jb     0x407eba
407e93:	8d 41 23             	lea    0x23(%ecx),%eax
407e96:	3b c1                	cmp    %ecx,%eax
407e98:	77 03                	ja     0x407e9d
407e9a:	83 c8 ff             	or     $0xffffffff,%eax
407e9d:	50                   	push   %eax
407e9e:	e8 53 2b 00 00       	call   0x40a9f6
407ea3:	59                   	pop    %ecx
407ea4:	8b c8                	mov    %eax,%ecx
407ea6:	85 c9                	test   %ecx,%ecx
407ea8:	74 0a                	je     0x407eb4
407eaa:	8d 41 23             	lea    0x23(%ecx),%eax
407ead:	83 e0 e0             	and    $0xffffffe0,%eax
407eb0:	89 48 fc             	mov    %ecx,-0x4(%eax)
407eb3:	c3                   	ret
407eb4:	ff 25 44 e1 40 00    	jmp    *0x40e144
407eba:	85 c9                	test   %ecx,%ecx
407ebc:	74 08                	je     0x407ec6
407ebe:	51                   	push   %ecx
407ebf:	e8 32 2b 00 00       	call   0x40a9f6
407ec4:	59                   	pop    %ecx
407ec5:	c3                   	ret
407ec6:	33 c0                	xor    %eax,%eax
407ec8:	c3                   	ret
407ec9:	cc                   	int3
407eca:	cc                   	int3
407ecb:	cc                   	int3
407ecc:	cc                   	int3
407ecd:	cc                   	int3
407ece:	cc                   	int3
407ecf:	cc                   	int3
407ed0:	8b ff                	mov    %edi,%edi
407ed2:	57                   	push   %edi
407ed3:	8b f9                	mov    %ecx,%edi
407ed5:	85 ff                	test   %edi,%edi
407ed7:	74 15                	je     0x407eee
407ed9:	8b 07                	mov    (%edi),%eax
407edb:	56                   	push   %esi
407edc:	6a 01                	push   $0x1
407ede:	8b 70 08             	mov    0x8(%eax),%esi
407ee1:	8b ce                	mov    %esi,%ecx
407ee3:	ff 15 f0 e1 40 00    	call   *0x40e1f0
407ee9:	8b cf                	mov    %edi,%ecx
407eeb:	ff d6                	call   *%esi
407eed:	5e                   	pop    %esi
407eee:	5f                   	pop    %edi
407eef:	c3                   	ret
407ef0:	83 c1 0c             	add    $0xc,%ecx
407ef3:	e9 01 05 00 00       	jmp    0x4083f9
407ef8:	68 98 1e 40 00       	push   $0x401e98
407efd:	ff 15 d4 e1 40 00    	call   *0x40e1d4
407f03:	cc                   	int3
407f04:	8b ff                	mov    %edi,%edi
407f06:	55                   	push   %ebp
407f07:	8b ec                	mov    %esp,%ebp
407f09:	56                   	push   %esi
407f0a:	57                   	push   %edi
407f0b:	8b f9                	mov    %ecx,%edi
407f0d:	8b 37                	mov    (%edi),%esi
407f0f:	85 f6                	test   %esi,%esi
407f11:	74 28                	je     0x407f3b
407f13:	53                   	push   %ebx
407f14:	8b 5f 04             	mov    0x4(%edi),%ebx
407f17:	3b f3                	cmp    %ebx,%esi
407f19:	74 10                	je     0x407f2b
407f1b:	8b ce                	mov    %esi,%ecx
407f1d:	e8 a6 cd ff ff       	call   0x404cc8
407f22:	83 c6 08             	add    $0x8,%esi
407f25:	3b f3                	cmp    %ebx,%esi
407f27:	75 f2                	jne    0x407f1b
407f29:	8b 37                	mov    (%edi),%esi
407f2b:	8b 57 08             	mov    0x8(%edi),%edx
407f2e:	8b ce                	mov    %esi,%ecx
407f30:	2b d6                	sub    %esi,%edx
407f32:	83 e2 f8             	and    $0xfffffff8,%edx
407f35:	e8 61 cd ff ff       	call   0x404c9b
407f3a:	5b                   	pop    %ebx
407f3b:	8b 4d 08             	mov    0x8(%ebp),%ecx
407f3e:	8b 45 0c             	mov    0xc(%ebp),%eax
407f41:	89 0f                	mov    %ecx,(%edi)
407f43:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
407f46:	89 47 04             	mov    %eax,0x4(%edi)
407f49:	8b 45 10             	mov    0x10(%ebp),%eax
407f4c:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
407f4f:	89 47 08             	mov    %eax,0x8(%edi)
407f52:	5f                   	pop    %edi
407f53:	5e                   	pop    %esi
407f54:	5d                   	pop    %ebp
407f55:	c2 0c 00             	ret    $0xc
407f58:	8b ff                	mov    %edi,%edi
407f5a:	55                   	push   %ebp
407f5b:	8b ec                	mov    %esp,%ebp
407f5d:	8b 51 08             	mov    0x8(%ecx),%edx
407f60:	b8 ff ff ff 1f       	mov    $0x1fffffff,%eax
407f65:	2b 11                	sub    (%ecx),%edx
407f67:	c1 fa 03             	sar    $0x3,%edx
407f6a:	8b ca                	mov    %edx,%ecx
407f6c:	d1 e9                	shr    $1,%ecx
407f6e:	2b c1                	sub    %ecx,%eax
407f70:	3b d0                	cmp    %eax,%edx
407f72:	77 08                	ja     0x407f7c
407f74:	8d 04 11             	lea    (%ecx,%edx,1),%eax
407f77:	3b 45 08             	cmp    0x8(%ebp),%eax
407f7a:	73 03                	jae    0x407f7f
407f7c:	8b 45 08             	mov    0x8(%ebp),%eax
407f7f:	5d                   	pop    %ebp
407f80:	c2 04 00             	ret    $0x4
407f83:	8b ff                	mov    %edi,%edi
407f85:	55                   	push   %ebp
407f86:	8b ec                	mov    %esp,%ebp
407f88:	51                   	push   %ecx
407f89:	51                   	push   %ecx
407f8a:	81 7d 08 ff ff ff 1f 	cmpl   $0x1fffffff,0x8(%ebp)
407f91:	56                   	push   %esi
407f92:	8b f1                	mov    %ecx,%esi
407f94:	77 66                	ja     0x407ffc
407f96:	53                   	push   %ebx
407f97:	8b 5e 04             	mov    0x4(%esi),%ebx
407f9a:	2b 1e                	sub    (%esi),%ebx
407f9c:	ff 75 08             	push   0x8(%ebp)
407f9f:	c1 fb 03             	sar    $0x3,%ebx
407fa2:	e8 b1 ff ff ff       	call   0x407f58
407fa7:	8b c8                	mov    %eax,%ecx
407fa9:	89 45 fc             	mov    %eax,-0x4(%ebp)
407fac:	c1 e1 03             	shl    $0x3,%ecx
407faf:	3d ff ff ff 1f       	cmp    $0x1fffffff,%eax
407fb4:	76 03                	jbe    0x407fb9
407fb6:	83 c9 ff             	or     $0xffffffff,%ecx
407fb9:	e8 cd fe ff ff       	call   0x407e8b
407fbe:	8b 55 08             	mov    0x8(%ebp),%edx
407fc1:	2b d3                	sub    %ebx,%edx
407fc3:	89 45 f8             	mov    %eax,-0x8(%ebp)
407fc6:	8d 0c d8             	lea    (%eax,%ebx,8),%ecx
407fc9:	5b                   	pop    %ebx
407fca:	74 0f                	je     0x407fdb
407fcc:	83 21 00             	andl   $0x0,(%ecx)
407fcf:	83 61 04 00          	andl   $0x0,0x4(%ecx)
407fd3:	83 c1 08             	add    $0x8,%ecx
407fd6:	83 ea 01             	sub    $0x1,%edx
407fd9:	75 f1                	jne    0x407fcc
407fdb:	8b 56 04             	mov    0x4(%esi),%edx
407fde:	51                   	push   %ecx
407fdf:	8b 0e                	mov    (%esi),%ecx
407fe1:	50                   	push   %eax
407fe2:	e8 1b 00 00 00       	call   0x408002
407fe7:	ff 75 fc             	push   -0x4(%ebp)
407fea:	8b ce                	mov    %esi,%ecx
407fec:	ff 75 08             	push   0x8(%ebp)
407fef:	ff 75 f8             	push   -0x8(%ebp)
407ff2:	e8 0d ff ff ff       	call   0x407f04
407ff7:	5e                   	pop    %esi
407ff8:	c9                   	leave
407ff9:	c2 08 00             	ret    $0x8
407ffc:	e8 f7 fe ff ff       	call   0x407ef8
408001:	cc                   	int3
408002:	8b ff                	mov    %edi,%edi
408004:	55                   	push   %ebp
408005:	8b ec                	mov    %esp,%ebp
408007:	56                   	push   %esi
408008:	8b 75 08             	mov    0x8(%ebp),%esi
40800b:	57                   	push   %edi
40800c:	8b fa                	mov    %edx,%edi
40800e:	3b cf                	cmp    %edi,%ecx
408010:	74 28                	je     0x40803a
408012:	8b d1                	mov    %ecx,%edx
408014:	53                   	push   %ebx
408015:	2b d6                	sub    %esi,%edx
408017:	33 db                	xor    %ebx,%ebx
408019:	89 1e                	mov    %ebx,(%esi)
40801b:	89 5e 04             	mov    %ebx,0x4(%esi)
40801e:	8b 01                	mov    (%ecx),%eax
408020:	89 06                	mov    %eax,(%esi)
408022:	8b 44 32 04          	mov    0x4(%edx,%esi,1),%eax
408026:	89 46 04             	mov    %eax,0x4(%esi)
408029:	89 19                	mov    %ebx,(%ecx)
40802b:	83 c1 08             	add    $0x8,%ecx
40802e:	89 5c 32 04          	mov    %ebx,0x4(%edx,%esi,1)
408032:	83 c6 08             	add    $0x8,%esi
408035:	3b cf                	cmp    %edi,%ecx
408037:	75 e0                	jne    0x408019
408039:	5b                   	pop    %ebx
40803a:	5f                   	pop    %edi
40803b:	8b c6                	mov    %esi,%eax
40803d:	5e                   	pop    %esi
40803e:	5d                   	pop    %ebp
40803f:	c2 08 00             	ret    $0x8