428b1e:	83 ce ff             	or     $0xffffffff,%esi
428b21:	f0 0f c1 70 e4       	lock xadd %esi,-0x1c(%eax)
428b26:	4e                   	dec    %esi
428b27:	75 0d                	jne    0x428b36
428b29:	8d 48 e0             	lea    -0x20(%eax),%ecx
428b2c:	85 c9                	test   %ecx,%ecx
428b2e:	74 06                	je     0x428b36
428b30:	51                   	push   %ecx
428b31:	e8 07 00 00 00       	call   0x428b3d
428b36:	8b c6                	mov    %esi,%eax
428b38:	5e                   	pop    %esi
428b39:	5d                   	pop    %ebp
428b3a:	c2 04 00             	ret    $0x4
428b3d:	8b ff                	mov    %edi,%edi
428b3f:	56                   	push   %esi
428b40:	8b f1                	mov    %ecx,%esi
428b42:	8b 06                	mov    (%esi),%eax
428b44:	8b 40 04             	mov    0x4(%eax),%eax
428b47:	c7 04 06 6c 1a 40 00 	movl   $0x401a6c,(%esi,%eax,1)
428b4e:	8b 06                	mov    (%esi),%eax
428b50:	8b 40 08             	mov    0x8(%eax),%eax
428b53:	c7 04 06 5c 1a 40 00 	movl   $0x401a5c,(%esi,%eax,1)
428b5a:	8b 06                	mov    (%esi),%eax
428b5c:	8b 50 04             	mov    0x4(%eax),%edx
428b5f:	8d 42 e0             	lea    -0x20(%edx),%eax
428b62:	89 44 32 fc          	mov    %eax,-0x4(%edx,%esi,1)
428b66:	8b 06                	mov    (%esi),%eax
428b68:	8b 48 08             	mov    0x8(%eax),%ecx
428b6b:	8d 41 d8             	lea    -0x28(%ecx),%eax
428b6e:	89 44 31 fc          	mov    %eax,-0x4(%ecx,%esi,1)
428b72:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
428b76:	74 09                	je     0x428b81
428b78:	ff 76 08             	push   0x8(%esi)
428b7b:	ff 15 5c 72 4a 00    	call   *0x4a725c
428b81:	56                   	push   %esi
428b82:	ff 15 10 74 4a 00    	call   *0x4a7410
428b88:	59                   	pop    %ecx
428b89:	8b c6                	mov    %esi,%eax
428b8b:	5e                   	pop    %esi
428b8c:	c2 04 00             	ret    $0x4
428b8f:	8b ff                	mov    %edi,%edi
428b91:	55                   	push   %ebp
428b92:	8b ec                	mov    %esp,%ebp
428b94:	51                   	push   %ecx
428b95:	51                   	push   %ecx
428b96:	8b 45 28             	mov    0x28(%ebp),%eax
428b99:	53                   	push   %ebx
428b9a:	8b 5d 0c             	mov    0xc(%ebp),%ebx
428b9d:	56                   	push   %esi
428b9e:	8b 75 18             	mov    0x18(%ebp),%esi
428ba1:	57                   	push   %edi
428ba2:	50                   	push   %eax
428ba3:	ff 75 1c             	push   0x1c(%ebp)
428ba6:	56                   	push   %esi
428ba7:	ff 75 14             	push   0x14(%ebp)
428baa:	ff 75 10             	push   0x10(%ebp)
428bad:	53                   	push   %ebx
428bae:	68 a0 fc 40 00       	push   $0x40fca0
428bb3:	e8 f8 51 ff ff       	call   0x41ddb0
428bb8:	8b 7d 08             	mov    0x8(%ebp),%edi
428bbb:	83 c4 1c             	add    $0x1c,%esp
428bbe:	8b 4f f4             	mov    -0xc(%edi),%ecx
428bc1:	85 c9                	test   %ecx,%ecx
428bc3:	74 27                	je     0x428bec
428bc5:	8b 01                	mov    (%ecx),%eax
428bc7:	8d 55 fc             	lea    -0x4(%ebp),%edx
428bca:	52                   	push   %edx
428bcb:	51                   	push   %ecx
428bcc:	8b 70 18             	mov    0x18(%eax),%esi
428bcf:	8b ce                	mov    %esi,%ecx
428bd1:	ff 15 2c 81 4a 00    	call   *0x4a812c
428bd7:	ff d6                	call   *%esi
428bd9:	85 c0                	test   %eax,%eax
428bdb:	75 09                	jne    0x428be6
428bdd:	39 45 fc             	cmp    %eax,-0x4(%ebp)
428be0:	0f 85 2d 01 00 00    	jne    0x428d13
428be6:	8b 45 28             	mov    0x28(%ebp),%eax
428be9:	8b 75 18             	mov    0x18(%ebp),%esi
428bec:	83 eb 01             	sub    $0x1,%ebx
428bef:	0f 84 f9 00 00 00    	je     0x428cee
428bf5:	83 eb 01             	sub    $0x1,%ebx
428bf8:	74 48                	je     0x428c42
428bfa:	83 eb 01             	sub    $0x1,%ebx
428bfd:	74 33                	je     0x428c32
428bff:	83 eb 01             	sub    $0x1,%ebx
428c02:	74 05                	je     0x428c09
428c04:	83 eb 01             	sub    $0x1,%ebx
428c07:	75 20                	jne    0x428c29
428c09:	ff 77 e8             	push   -0x18(%edi)
428c0c:	ff 15 54 72 4a 00    	call   *0x4a7254
428c12:	85 c0                	test   %eax,%eax
428c14:	74 13                	je     0x428c29
428c16:	8b 57 f0             	mov    -0x10(%edi),%edx
428c19:	8b c8                	mov    %eax,%ecx
428c1b:	e8 17 02 00 00       	call   0x428e37
428c20:	ff 77 e8             	push   -0x18(%edi)
428c23:	ff 15 50 72 4a 00    	call   *0x4a7250
428c29:	33 c0                	xor    %eax,%eax
428c2b:	5f                   	pop    %edi
428c2c:	5e                   	pop    %esi
428c2d:	5b                   	pop    %ebx
428c2e:	c9                   	leave
428c2f:	c2 24 00             	ret    $0x24
428c32:	ff 75 14             	push   0x14(%ebp)
428c35:	8d 4f e0             	lea    -0x20(%edi),%ecx
428c38:	ff 75 10             	push   0x10(%ebp)
428c3b:	e8 cc 02 00 00       	call   0x428f0c
428c40:	eb e7                	jmp    0x428c29
428c42:	ff 75 14             	push   0x14(%ebp)
428c45:	8d 4f e0             	lea    -0x20(%edi),%ecx
428c48:	ff 75 10             	push   0x10(%ebp)
428c4b:	e8 bc 02 00 00       	call   0x428f0c
428c50:	83 7f ec 00          	cmpl   $0x0,-0x14(%edi)
428c54:	8b 5d 28             	mov    0x28(%ebp),%ebx
428c57:	75 20                	jne    0x428c79
428c59:	85 f6                	test   %esi,%esi
428c5b:	75 1c                	jne    0x428c79
428c5d:	8b cb                	mov    %ebx,%ecx
428c5f:	e8 03 01 00 00       	call   0x428d67
428c64:	85 c0                	test   %eax,%eax
428c66:	74 11                	je     0x428c79
428c68:	50                   	push   %eax
428c69:	8d 4f e0             	lea    -0x20(%edi),%ecx
428c6c:	e8 aa 00 00 00       	call   0x428d1b
428c71:	85 c0                	test   %eax,%eax
428c73:	0f 85 9a 00 00 00    	jne    0x428d13
428c79:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
428c7c:	85 c9                	test   %ecx,%ecx
428c7e:	0f 88 8f 00 00 00    	js     0x428d13
428c84:	85 f6                	test   %esi,%esi
428c86:	0f 88 87 00 00 00    	js     0x428d13
428c8c:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
428c8f:	89 45 f8             	mov    %eax,-0x8(%ebp)
428c92:	3b c6                	cmp    %esi,%eax
428c94:	72 7d                	jb     0x428d13
428c96:	3b 47 ec             	cmp    -0x14(%edi),%eax
428c99:	76 26                	jbe    0x428cc1
428c9b:	6a 02                	push   $0x2
428c9d:	58                   	pop    %eax
428c9e:	f7 e1                	mul    %ecx
428ca0:	85 d2                	test   %edx,%edx
428ca2:	77 6f                	ja     0x428d13
428ca4:	72 05                	jb     0x428cab
428ca6:	83 f8 ff             	cmp    $0xffffffff,%eax
428ca9:	77 68                	ja     0x428d13
428cab:	03 c6                	add    %esi,%eax
428cad:	3b c6                	cmp    %esi,%eax
428caf:	72 62                	jb     0x428d13
428cb1:	50                   	push   %eax
428cb2:	8d 4f e0             	lea    -0x20(%edi),%ecx
428cb5:	e8 61 00 00 00       	call   0x428d1b
428cba:	85 c0                	test   %eax,%eax
428cbc:	75 55                	jne    0x428d13
428cbe:	8b 45 f8             	mov    -0x8(%ebp),%eax
428cc1:	3b 47 f0             	cmp    -0x10(%edi),%eax
428cc4:	76 03                	jbe    0x428cc9
428cc6:	89 47 f0             	mov    %eax,-0x10(%edi)
428cc9:	ff 77 e8             	push   -0x18(%edi)
428ccc:	ff 15 54 72 4a 00    	call   *0x4a7254
428cd2:	85 c0                	test   %eax,%eax
428cd4:	0f 84 4f ff ff ff    	je     0x428c29
428cda:	ff 75 1c             	push   0x1c(%ebp)
428cdd:	03 c6                	add    %esi,%eax
428cdf:	53                   	push   %ebx
428ce0:	50                   	push   %eax
428ce1:	e8 47 83 06 00       	call   0x49102d
428ce6:	83 c4 0c             	add    $0xc,%esp
428ce9:	e9 32 ff ff ff       	jmp    0x428c20
428cee:	85 c0                	test   %eax,%eax
428cf0:	0f 84 33 ff ff ff    	je     0x428c29
428cf6:	83 78 14 00          	cmpl   $0x0,0x14(%eax)
428cfa:	0f 84 29 ff ff ff    	je     0x428c29
428d00:	ff 70 14             	push   0x14(%eax)
428d03:	8d 4f e0             	lea    -0x20(%edi),%ecx
428d06:	e8 10 00 00 00       	call   0x428d1b
428d0b:	85 c0                	test   %eax,%eax
428d0d:	0f 84 16 ff ff ff    	je     0x428c29
428d13:	33 c0                	xor    %eax,%eax
428d15:	40                   	inc    %eax
428d16:	e9 10 ff ff ff       	jmp    0x428c2b
428d1b:	8b ff                	mov    %edi,%edi
428d1d:	55                   	push   %ebp
428d1e:	8b ec                	mov    %esp,%ebp
428d20:	56                   	push   %esi
428d21:	8b 75 08             	mov    0x8(%ebp),%esi
428d24:	57                   	push   %edi
428d25:	8b f9                	mov    %ecx,%edi
428d27:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
428d2b:	75 0b                	jne    0x428d38
428d2d:	56                   	push   %esi
428d2e:	6a 02                	push   $0x2
428d30:	ff 15 58 72 4a 00    	call   *0x4a7258
428d36:	eb 0c                	jmp    0x428d44
428d38:	6a 00                	push   $0x0
428d3a:	56                   	push   %esi
428d3b:	ff 77 08             	push   0x8(%edi)
428d3e:	ff 15 4c 72 4a 00    	call   *0x4a724c
428d44:	85 c0                	test   %eax,%eax
428d46:	75 11                	jne    0x428d59
428d48:	6a 01                	push   $0x1
428d4a:	b9 e0 55 4a 00       	mov    $0x4a55e0,%ecx
428d4f:	e8 25 4f 02 00       	call   0x44dc79
428d54:	33 c0                	xor    %eax,%eax
428d56:	40                   	inc    %eax
428d57:	eb 08                	jmp    0x428d61
428d59:	89 47 08             	mov    %eax,0x8(%edi)
428d5c:	33 c0                	xor    %eax,%eax
428d5e:	89 77 0c             	mov    %esi,0xc(%edi)
428d61:	5f                   	pop    %edi
428d62:	5e                   	pop    %esi
428d63:	5d                   	pop    %ebp
428d64:	c2 04 00             	ret    $0x4
428d67:	8b ff                	mov    %edi,%edi
428d69:	53                   	push   %ebx
428d6a:	56                   	push   %esi
428d6b:	57                   	push   %edi
428d6c:	8b f9                	mov    %ecx,%edi
428d6e:	8b 1f                	mov    (%edi),%ebx
428d70:	83 fb 0c             	cmp    $0xc,%ebx
428d73:	74 0f                	je     0x428d84
428d75:	83 fb 28             	cmp    $0x28,%ebx
428d78:	74 0a                	je     0x428d84
428d7a:	83 fb 6c             	cmp    $0x6c,%ebx
428d7d:	74 05                	je     0x428d84
428d7f:	83 fb 7c             	cmp    $0x7c,%ebx
428d82:	75 63                	jne    0x428de7
428d84:	8b f3                	mov    %ebx,%esi
428d86:	83 fb 0c             	cmp    $0xc,%ebx
428d89:	75 34                	jne    0x428dbf
428d8b:	0f b7 57 0a          	movzwl 0xa(%edi),%edx
428d8f:	83 fa 08             	cmp    $0x8,%edx
428d92:	77 0d                	ja     0x428da1
428d94:	33 c0                	xor    %eax,%eax
428d96:	8a ca                	mov    %dl,%cl
428d98:	40                   	inc    %eax
428d99:	d3 e0                	shl    %cl,%eax
428d9b:	83 c0 04             	add    $0x4,%eax
428d9e:	6b f0 03             	imul   $0x3,%eax,%esi
428da1:	0f b7 4f 04          	movzwl 0x4(%edi),%ecx
428da5:	0f b7 47 06          	movzwl 0x6(%edi),%eax
428da9:	0f af ca             	imul   %edx,%ecx
428dac:	83 c1 1f             	add    $0x1f,%ecx
428daf:	c1 e9 03             	shr    $0x3,%ecx
428db2:	81 e1 fc ff ff 1f    	and    $0x1ffffffc,%ecx
428db8:	0f af c8             	imul   %eax,%ecx
428dbb:	03 f1                	add    %ecx,%esi
428dbd:	eb 72                	jmp    0x428e31
428dbf:	8b 47 20             	mov    0x20(%edi),%eax
428dc2:	85 c0                	test   %eax,%eax
428dc4:	75 0c                	jne    0x428dd2
428dc6:	0f b7 4f 0e          	movzwl 0xe(%edi),%ecx
428dca:	83 f9 08             	cmp    $0x8,%ecx
428dcd:	77 06                	ja     0x428dd5
428dcf:	40                   	inc    %eax
428dd0:	d3 e0                	shl    %cl,%eax
428dd2:	8d 34 83             	lea    (%ebx,%eax,4),%esi
428dd5:	8b 4f 14             	mov    0x14(%edi),%ecx
428dd8:	85 c9                	test   %ecx,%ecx
428dda:	75 2f                	jne    0x428e0b
428ddc:	39 4f 10             	cmp    %ecx,0x10(%edi)
428ddf:	74 0a                	je     0x428deb
428de1:	83 7f 10 03          	cmpl   $0x3,0x10(%edi)
428de5:	74 04                	je     0x428deb
428de7:	33 c0                	xor    %eax,%eax
428de9:	eb 48                	jmp    0x428e33
428deb:	8b 47 08             	mov    0x8(%edi),%eax
428dee:	99                   	cltd
428def:	8b c8                	mov    %eax,%ecx
428df1:	0f b7 47 0e          	movzwl 0xe(%edi),%eax
428df5:	0f af 47 04          	imul   0x4(%edi),%eax
428df9:	33 ca                	xor    %edx,%ecx
428dfb:	2b ca                	sub    %edx,%ecx
428dfd:	83 c0 1f             	add    $0x1f,%eax
428e00:	c1 e8 03             	shr    $0x3,%eax
428e03:	25 fc ff ff 1f       	and    $0x1ffffffc,%eax
428e08:	0f af c8             	imul   %eax,%ecx
428e0b:	03 f1                	add    %ecx,%esi
428e0d:	8b c6                	mov    %esi,%eax
428e0f:	83 fb 28             	cmp    $0x28,%ebx
428e12:	75 0b                	jne    0x428e1f
428e14:	83 7f 10 03          	cmpl   $0x3,0x10(%edi)
428e18:	75 17                	jne    0x428e31
428e1a:	8d 70 0c             	lea    0xc(%eax),%esi
428e1d:	eb 12                	jmp    0x428e31
428e1f:	83 fb 7c             	cmp    $0x7c,%ebx
428e22:	72 0d                	jb     0x428e31
428e24:	8b f0                	mov    %eax,%esi
428e26:	39 47 70             	cmp    %eax,0x70(%edi)
428e29:	76 03                	jbe    0x428e2e
428e2b:	8b 77 70             	mov    0x70(%edi),%esi
428e2e:	03 77 74             	add    0x74(%edi),%esi
428e31:	8b c6                	mov    %esi,%eax
428e33:	5f                   	pop    %edi
428e34:	5e                   	pop    %esi
428e35:	5b                   	pop    %ebx
428e36:	c3                   	ret
428e37:	8b ff                	mov    %edi,%edi
428e39:	53                   	push   %ebx
428e3a:	57                   	push   %edi
428e3b:	8b f9                	mov    %ecx,%edi
428e3d:	8b da                	mov    %edx,%ebx
428e3f:	83 3f 0c             	cmpl   $0xc,(%edi)
428e42:	0f 84 83 00 00 00    	je     0x428ecb
428e48:	83 3f 28             	cmpl   $0x28,(%edi)
428e4b:	74 0e                	je     0x428e5b
428e4d:	83 3f 6c             	cmpl   $0x6c,(%edi)
428e50:	74 09                	je     0x428e5b
428e52:	83 3f 7c             	cmpl   $0x7c,(%edi)
428e55:	0f 85 ae 00 00 00    	jne    0x428f09
428e5b:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
428e5f:	0f 85 a4 00 00 00    	jne    0x428f09
428e65:	8b 57 14             	mov    0x14(%edi),%edx
428e68:	85 d2                	test   %edx,%edx
428e6a:	75 3e                	jne    0x428eaa
428e6c:	8b 47 20             	mov    0x20(%edi),%eax
428e6f:	8b d3                	mov    %ebx,%edx
428e71:	2b 17                	sub    (%edi),%edx
428e73:	85 c0                	test   %eax,%eax
428e75:	74 07                	je     0x428e7e
428e77:	6b c0 fc             	imul   $0xfffffffc,%eax,%eax
428e7a:	03 d0                	add    %eax,%edx
428e7c:	eb 11                	jmp    0x428e8f
428e7e:	0f b7 4f 0e          	movzwl 0xe(%edi),%ecx
428e82:	83 f9 08             	cmp    $0x8,%ecx
428e85:	77 08                	ja     0x428e8f
428e87:	83 c8 ff             	or     $0xffffffff,%eax
428e8a:	d3 e0                	shl    %cl,%eax
428e8c:	8d 14 82             	lea    (%edx,%eax,4),%edx
428e8f:	83 3f 28             	cmpl   $0x28,(%edi)
428e92:	75 0b                	jne    0x428e9f
428e94:	83 7f 10 03          	cmpl   $0x3,0x10(%edi)
428e98:	75 0d                	jne    0x428ea7
428e9a:	83 ea 0c             	sub    $0xc,%edx
428e9d:	eb 08                	jmp    0x428ea7
428e9f:	83 3f 7c             	cmpl   $0x7c,(%edi)
428ea2:	72 03                	jb     0x428ea7
428ea4:	2b 57 74             	sub    0x74(%edi),%edx
428ea7:	89 57 14             	mov    %edx,0x14(%edi)
428eaa:	0f b7 4f 0e          	movzwl 0xe(%edi),%ecx
428eae:	8b c2                	mov    %edx,%eax
428eb0:	0f af 4f 04          	imul   0x4(%edi),%ecx
428eb4:	33 d2                	xor    %edx,%edx
428eb6:	83 c1 1f             	add    $0x1f,%ecx
428eb9:	c1 e9 03             	shr    $0x3,%ecx
428ebc:	81 e1 fc ff ff 1f    	and    $0x1ffffffc,%ecx
428ec2:	f7 f1                	div    %ecx
428ec4:	f7 d8                	neg    %eax
428ec6:	89 47 08             	mov    %eax,0x8(%edi)
428ec9:	eb 3e                	jmp    0x428f09
428ecb:	66 83 7f 06 00       	cmpw   $0x0,0x6(%edi)