56ead6:	e8 b9 92 00 00       	call   0x577d94
56eadb:	83 c8 ff             	or     $0xffffffff,%eax
56eade:	5f                   	pop    %edi
56eadf:	5e                   	pop    %esi
56eae0:	5b                   	pop    %ebx
56eae1:	c3                   	ret
56eae2:	90                   	nop
56eae3:	90                   	nop
56eae4:	53                   	push   %ebx
56eae5:	56                   	push   %esi
56eae6:	57                   	push   %edi
56eae7:	55                   	push   %ebp
56eae8:	83 c4 c8             	add    $0xffffffc8,%esp
56eaeb:	8b ea                	mov    %edx,%ebp
56eaed:	f7 c5 00 00 01 00    	test   $0x10000,%ebp
56eaf3:	89 04 24             	mov    %eax,(%esp)
56eaf6:	8b f1                	mov    %ecx,%esi
56eaf8:	74 41                	je     0x56eb3b
56eafa:	c7 44 24 20 01 00 00 	movl   $0x1,0x20(%esp)
56eb01:	00
56eb02:	8b 46 14             	mov    0x14(%esi),%eax
56eb05:	48                   	dec    %eax
56eb06:	7e 19                	jle    0x56eb21
56eb08:	8b 56 1c             	mov    0x1c(%esi),%edx
56eb0b:	8b 46 1c             	mov    0x1c(%esi),%eax
56eb0e:	8b 5a 04             	mov    0x4(%edx),%ebx
56eb11:	8b 10                	mov    (%eax),%edx
56eb13:	2b da                	sub    %edx,%ebx
56eb15:	85 db                	test   %ebx,%ebx
56eb17:	79 03                	jns    0x56eb1c
56eb19:	83 c3 03             	add    $0x3,%ebx
56eb1c:	c1 fb 02             	sar    $0x2,%ebx
56eb1f:	eb 02                	jmp    0x56eb23
56eb21:	33 db                	xor    %ebx,%ebx
56eb23:	8b 46 0c             	mov    0xc(%esi),%eax
56eb26:	8b 56 04             	mov    0x4(%esi),%edx
56eb29:	2b c2                	sub    %edx,%eax
56eb2b:	89 44 24 24          	mov    %eax,0x24(%esp)
56eb2f:	8b 7e 08             	mov    0x8(%esi),%edi
56eb32:	8b 46 10             	mov    0x10(%esi),%eax
56eb35:	89 44 24 04          	mov    %eax,0x4(%esp)
56eb39:	eb 3d                	jmp    0x56eb78
56eb3b:	8b 56 14             	mov    0x14(%esi),%edx
56eb3e:	4a                   	dec    %edx
56eb3f:	7e 16                	jle    0x56eb57
56eb41:	8b 46 1c             	mov    0x1c(%esi),%eax
56eb44:	8b 50 04             	mov    0x4(%eax),%edx
56eb47:	8b 08                	mov    (%eax),%ecx
56eb49:	2b d1                	sub    %ecx,%edx
56eb4b:	85 d2                	test   %edx,%edx
56eb4d:	79 03                	jns    0x56eb52
56eb4f:	83 c2 03             	add    $0x3,%edx
56eb52:	c1 fa 02             	sar    $0x2,%edx
56eb55:	eb 02                	jmp    0x56eb59
56eb57:	33 d2                	xor    %edx,%edx
56eb59:	89 54 24 20          	mov    %edx,0x20(%esp)
56eb5d:	bb 01 00 00 00       	mov    $0x1,%ebx
56eb62:	8b 46 10             	mov    0x10(%esi),%eax
56eb65:	8b 56 08             	mov    0x8(%esi),%edx
56eb68:	2b c2                	sub    %edx,%eax
56eb6a:	89 44 24 24          	mov    %eax,0x24(%esp)
56eb6e:	8b 7e 04             	mov    0x4(%esi),%edi
56eb71:	8b 46 0c             	mov    0xc(%esi),%eax
56eb74:	89 44 24 04          	mov    %eax,0x4(%esp)
56eb78:	8b 54 24 04          	mov    0x4(%esp),%edx
56eb7c:	3b fa                	cmp    %edx,%edi
56eb7e:	7c 17                	jl     0x56eb97
56eb80:	68 6f 02 00 00       	push   $0x26f
56eb85:	68 5c 0d 6a 00       	push   $0x6a0d5c
56eb8a:	68 4a 0d 6a 00       	push   $0x6a0d4a
56eb8f:	e8 ac bf fe ff       	call   0x55ab40
56eb94:	83 c4 0c             	add    $0xc,%esp
56eb97:	8b 4e 08             	mov    0x8(%esi),%ecx
56eb9a:	8b 46 08             	mov    0x8(%esi),%eax
56eb9d:	2b c8                	sub    %eax,%ecx
56eb9f:	8b 56 1c             	mov    0x1c(%esi),%edx
56eba2:	8b 46 04             	mov    0x4(%esi),%eax
56eba5:	8b 0c 8a             	mov    (%edx,%ecx,4),%ecx
56eba8:	8b 56 04             	mov    0x4(%esi),%edx
56ebab:	2b c2                	sub    %edx,%eax
56ebad:	c1 e0 02             	shl    $0x2,%eax
56ebb0:	03 c8                	add    %eax,%ecx
56ebb2:	f7 c5 01 00 00 00    	test   $0x1,%ebp
56ebb8:	8b f1                	mov    %ecx,%esi
56ebba:	0f 84 02 03 00 00    	je     0x56eec2
56ebc0:	e9 7a 01 00 00       	jmp    0x56ed3f
56ebc5:	53                   	push   %ebx
56ebc6:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
56ebca:	51                   	push   %ecx
56ebcb:	8d 44 24 14          	lea    0x14(%esp),%eax
56ebcf:	50                   	push   %eax
56ebd0:	8d 54 24 1c          	lea    0x1c(%esp),%edx
56ebd4:	52                   	push   %edx
56ebd5:	8d 4c 24 24          	lea    0x24(%esp),%ecx
56ebd9:	51                   	push   %ecx
56ebda:	8d 44 24 2c          	lea    0x2c(%esp),%eax
56ebde:	50                   	push   %eax
56ebdf:	8d 54 24 34          	lea    0x34(%esp),%edx
56ebe3:	52                   	push   %edx
56ebe4:	8b 4c 24 20          	mov    0x20(%esp),%ecx
56ebe8:	8b d7                	mov    %edi,%edx
56ebea:	8b c6                	mov    %esi,%eax
56ebec:	e8 eb f7 ff ff       	call   0x56e3dc
56ebf1:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56ebf5:	2b cf                	sub    %edi,%ecx
56ebf7:	49                   	dec    %ecx
56ebf8:	0f 8e 2a 01 00 00    	jle    0x56ed28
56ebfe:	53                   	push   %ebx
56ebff:	8b 44 24 0c          	mov    0xc(%esp),%eax
56ec03:	50                   	push   %eax
56ec04:	8b 54 24 14          	mov    0x14(%esp),%edx
56ec08:	52                   	push   %edx
56ec09:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ec0d:	51                   	push   %ecx
56ec0e:	8b 44 24 24          	mov    0x24(%esp),%eax
56ec12:	50                   	push   %eax
56ec13:	8b c6                	mov    %esi,%eax
56ec15:	8b 54 24 2c          	mov    0x2c(%esp),%edx
56ec19:	52                   	push   %edx
56ec1a:	8b d7                	mov    %edi,%edx
56ec1c:	8b 4c 24 34          	mov    0x34(%esp),%ecx
56ec20:	51                   	push   %ecx
56ec21:	8b 4c 24 20          	mov    0x20(%esp),%ecx
56ec25:	e8 72 f8 ff ff       	call   0x56e49c
56ec2a:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ec2e:	8b 6c 24 18          	mov    0x18(%esp),%ebp
56ec32:	2b cd                	sub    %ebp,%ecx
56ec34:	8b 44 24 08          	mov    0x8(%esp),%eax
56ec38:	8b 54 24 14          	mov    0x14(%esp),%edx
56ec3c:	89 4c 24 28          	mov    %ecx,0x28(%esp)
56ec40:	8b 4c 24 18          	mov    0x18(%esp),%ecx
56ec44:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56ec48:	3b cd                	cmp    %ebp,%ecx
56ec4a:	7d 0f                	jge    0x56ec5b
56ec4c:	8b 08                	mov    (%eax),%ecx
56ec4e:	29 0a                	sub    %ecx,(%edx)
56ec50:	8b cb                	mov    %ebx,%ecx
56ec52:	c1 e1 02             	shl    $0x2,%ecx
56ec55:	03 d1                	add    %ecx,%edx
56ec57:	ff 4c 24 28          	decl   0x28(%esp)
56ec5b:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ec5f:	8b 6c 24 10          	mov    0x10(%esp),%ebp
56ec63:	3b cd                	cmp    %ebp,%ecx
56ec65:	7c 1a                	jl     0x56ec81
56ec67:	ff 4c 24 28          	decl   0x28(%esp)
56ec6b:	eb 14                	jmp    0x56ec81
56ec6d:	8b 08                	mov    (%eax),%ecx
56ec6f:	8b 2c 98             	mov    (%eax,%ebx,4),%ebp
56ec72:	03 cd                	add    %ebp,%ecx
56ec74:	d1 f9                	sar    $1,%ecx
56ec76:	29 0a                	sub    %ecx,(%edx)
56ec78:	8b cb                	mov    %ebx,%ecx
56ec7a:	c1 e1 02             	shl    $0x2,%ecx
56ec7d:	03 d1                	add    %ecx,%edx
56ec7f:	03 c1                	add    %ecx,%eax
56ec81:	8b 4c 24 28          	mov    0x28(%esp),%ecx
56ec85:	83 44 24 28 ff       	addl   $0xffffffff,0x28(%esp)
56ec8a:	85 c9                	test   %ecx,%ecx
56ec8c:	7f df                	jg     0x56ec6d
56ec8e:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ec92:	8b 6c 24 10          	mov    0x10(%esp),%ebp
56ec96:	3b cd                	cmp    %ebp,%ecx
56ec98:	7c 04                	jl     0x56ec9e
56ec9a:	8b 00                	mov    (%eax),%eax
56ec9c:	29 02                	sub    %eax,(%edx)
56ec9e:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56eca2:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56eca6:	2b cd                	sub    %ebp,%ecx
56eca8:	8b 54 24 08          	mov    0x8(%esp),%edx
56ecac:	8b 44 24 14          	mov    0x14(%esp),%eax
56ecb0:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
56ecb4:	8b 4c 24 18          	mov    0x18(%esp),%ecx
56ecb8:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56ecbc:	3b cd                	cmp    %ebp,%ecx
56ecbe:	7c 17                	jl     0x56ecd7
56ecc0:	8b 08                	mov    (%eax),%ecx
56ecc2:	03 c9                	add    %ecx,%ecx
56ecc4:	83 c1 02             	add    $0x2,%ecx
56ecc7:	c1 f9 02             	sar    $0x2,%ecx
56ecca:	01 0a                	add    %ecx,(%edx)
56eccc:	8b cb                	mov    %ebx,%ecx
56ecce:	c1 e1 02             	shl    $0x2,%ecx
56ecd1:	03 d1                	add    %ecx,%edx
56ecd3:	ff 4c 24 2c          	decl   0x2c(%esp)
56ecd7:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ecdb:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
56ecdf:	3b cd                	cmp    %ebp,%ecx
56ece1:	7e 1e                	jle    0x56ed01
56ece3:	ff 4c 24 2c          	decl   0x2c(%esp)
56ece7:	eb 18                	jmp    0x56ed01
56ece9:	8b 08                	mov    (%eax),%ecx
56eceb:	8b 2c 98             	mov    (%eax,%ebx,4),%ebp
56ecee:	03 cd                	add    %ebp,%ecx
56ecf0:	83 c1 02             	add    $0x2,%ecx
56ecf3:	c1 f9 02             	sar    $0x2,%ecx
56ecf6:	01 0a                	add    %ecx,(%edx)
56ecf8:	8b cb                	mov    %ebx,%ecx
56ecfa:	c1 e1 02             	shl    $0x2,%ecx
56ecfd:	03 d1                	add    %ecx,%edx
56ecff:	03 c1                	add    %ecx,%eax
56ed01:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
56ed05:	83 44 24 2c ff       	addl   $0xffffffff,0x2c(%esp)
56ed0a:	85 c9                	test   %ecx,%ecx
56ed0c:	7f db                	jg     0x56ece9
56ed0e:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ed12:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
56ed16:	3b cd                	cmp    %ebp,%ecx
56ed18:	7e 1c                	jle    0x56ed36
56ed1a:	8b 00                	mov    (%eax),%eax
56ed1c:	03 c0                	add    %eax,%eax
56ed1e:	83 c0 02             	add    $0x2,%eax
56ed21:	c1 f8 02             	sar    $0x2,%eax
56ed24:	01 02                	add    %eax,(%edx)
56ed26:	eb 0e                	jmp    0x56ed36
56ed28:	8b 54 24 0c          	mov    0xc(%esp),%edx
56ed2c:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ed30:	3b d1                	cmp    %ecx,%edx
56ed32:	75 02                	jne    0x56ed36
56ed34:	d1 26                	shll   $1,(%esi)
56ed36:	8b 44 24 20          	mov    0x20(%esp),%eax
56ed3a:	c1 e0 02             	shl    $0x2,%eax
56ed3d:	03 f0                	add    %eax,%esi
56ed3f:	8b 54 24 24          	mov    0x24(%esp),%edx
56ed43:	83 44 24 24 ff       	addl   $0xffffffff,0x24(%esp)
56ed48:	85 d2                	test   %edx,%edx
56ed4a:	0f 8f 75 fe ff ff    	jg     0x56ebc5
56ed50:	e9 7e 01 00 00       	jmp    0x56eed3
56ed55:	53                   	push   %ebx
56ed56:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
56ed5a:	51                   	push   %ecx
56ed5b:	8d 44 24 14          	lea    0x14(%esp),%eax
56ed5f:	50                   	push   %eax
56ed60:	8d 54 24 1c          	lea    0x1c(%esp),%edx
56ed64:	52                   	push   %edx
56ed65:	8d 4c 24 24          	lea    0x24(%esp),%ecx
56ed69:	51                   	push   %ecx
56ed6a:	8d 44 24 2c          	lea    0x2c(%esp),%eax
56ed6e:	50                   	push   %eax
56ed6f:	8d 54 24 34          	lea    0x34(%esp),%edx
56ed73:	52                   	push   %edx
56ed74:	8b 4c 24 20          	mov    0x20(%esp),%ecx
56ed78:	8b d7                	mov    %edi,%edx
56ed7a:	8b c6                	mov    %esi,%eax
56ed7c:	e8 5b f6 ff ff       	call   0x56e3dc
56ed81:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56ed85:	2b cf                	sub    %edi,%ecx
56ed87:	49                   	dec    %ecx
56ed88:	0f 8e 1d 01 00 00    	jle    0x56eeab
56ed8e:	53                   	push   %ebx
56ed8f:	8b 44 24 0c          	mov    0xc(%esp),%eax
56ed93:	50                   	push   %eax
56ed94:	8b 54 24 14          	mov    0x14(%esp),%edx
56ed98:	52                   	push   %edx
56ed99:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ed9d:	51                   	push   %ecx
56ed9e:	8b 44 24 24          	mov    0x24(%esp),%eax
56eda2:	50                   	push   %eax
56eda3:	8b c6                	mov    %esi,%eax
56eda5:	8b 54 24 2c          	mov    0x2c(%esp),%edx
56eda9:	52                   	push   %edx
56edaa:	8b d7                	mov    %edi,%edx
56edac:	8b 4c 24 34          	mov    0x34(%esp),%ecx
56edb0:	51                   	push   %ecx
56edb1:	8b 4c 24 20          	mov    0x20(%esp),%ecx
56edb5:	e8 e2 f6 ff ff       	call   0x56e49c
56edba:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56edbe:	8b 6c 24 18          	mov    0x18(%esp),%ebp
56edc2:	2b cd                	sub    %ebp,%ecx
56edc4:	8b 44 24 08          	mov    0x8(%esp),%eax
56edc8:	8b 54 24 14          	mov    0x14(%esp),%edx
56edcc:	89 4c 24 30          	mov    %ecx,0x30(%esp)
56edd0:	8b 4c 24 18          	mov    0x18(%esp),%ecx
56edd4:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56edd8:	3b cd                	cmp    %ebp,%ecx
56edda:	7d 11                	jge    0x56eded
56eddc:	8b 08                	mov    (%eax),%ecx
56edde:	f7 d9                	neg    %ecx
56ede0:	01 0a                	add    %ecx,(%edx)
56ede2:	8b cb                	mov    %ebx,%ecx
56ede4:	c1 e1 02             	shl    $0x2,%ecx
56ede7:	03 d1                	add    %ecx,%edx
56ede9:	ff 4c 24 30          	decl   0x30(%esp)
56eded:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56edf1:	8b 6c 24 10          	mov    0x10(%esp),%ebp
56edf5:	3b cd                	cmp    %ebp,%ecx
56edf7:	7c 1c                	jl     0x56ee15
56edf9:	ff 4c 24 30          	decl   0x30(%esp)
56edfd:	eb 16                	jmp    0x56ee15
56edff:	8b 08                	mov    (%eax),%ecx
56ee01:	8b 2c 98             	mov    (%eax,%ebx,4),%ebp
56ee04:	03 cd                	add    %ebp,%ecx
56ee06:	d1 f9                	sar    $1,%ecx
56ee08:	f7 d9                	neg    %ecx
56ee0a:	01 0a                	add    %ecx,(%edx)
56ee0c:	8b cb                	mov    %ebx,%ecx
56ee0e:	c1 e1 02             	shl    $0x2,%ecx
56ee11:	03 d1                	add    %ecx,%edx
56ee13:	03 c1                	add    %ecx,%eax
56ee15:	8b 4c 24 30          	mov    0x30(%esp),%ecx
56ee19:	83 44 24 30 ff       	addl   $0xffffffff,0x30(%esp)
56ee1e:	85 c9                	test   %ecx,%ecx
56ee20:	7f dd                	jg     0x56edff
56ee22:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
56ee26:	8b 6c 24 10          	mov    0x10(%esp),%ebp
56ee2a:	3b cd                	cmp    %ebp,%ecx
56ee2c:	7c 06                	jl     0x56ee34
56ee2e:	8b 00                	mov    (%eax),%eax
56ee30:	f7 d8                	neg    %eax
56ee32:	01 02                	add    %eax,(%edx)
56ee34:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ee38:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56ee3c:	2b cd                	sub    %ebp,%ecx
56ee3e:	8b 54 24 08          	mov    0x8(%esp),%edx
56ee42:	8b 44 24 14          	mov    0x14(%esp),%eax
56ee46:	89 4c 24 34          	mov    %ecx,0x34(%esp)
56ee4a:	8b 4c 24 18          	mov    0x18(%esp),%ecx
56ee4e:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
56ee52:	3b cd                	cmp    %ebp,%ecx
56ee54:	7c 0f                	jl     0x56ee65
56ee56:	8b 08                	mov    (%eax),%ecx
56ee58:	01 0a                	add    %ecx,(%edx)
56ee5a:	8b cb                	mov    %ebx,%ecx
56ee5c:	c1 e1 02             	shl    $0x2,%ecx
56ee5f:	03 d1                	add    %ecx,%edx
56ee61:	ff 4c 24 34          	decl   0x34(%esp)
56ee65:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ee69:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
56ee6d:	3b cd                	cmp    %ebp,%ecx
56ee6f:	7e 1b                	jle    0x56ee8c
56ee71:	ff 4c 24 34          	decl   0x34(%esp)
56ee75:	eb 15                	jmp    0x56ee8c
56ee77:	8b 08                	mov    (%eax),%ecx
56ee79:	8b 2c 98             	mov    (%eax,%ebx,4),%ebp
56ee7c:	03 cd                	add    %ebp,%ecx
56ee7e:	c1 f9 02             	sar    $0x2,%ecx
56ee81:	01 0a                	add    %ecx,(%edx)
56ee83:	8b cb                	mov    %ebx,%ecx
56ee85:	c1 e1 02             	shl    $0x2,%ecx
56ee88:	03 d1                	add    %ecx,%edx
56ee8a:	03 c1                	add    %ecx,%eax
56ee8c:	8b 4c 24 34          	mov    0x34(%esp),%ecx
56ee90:	83 44 24 34 ff       	addl   $0xffffffff,0x34(%esp)
56ee95:	85 c9                	test   %ecx,%ecx
56ee97:	7f de                	jg     0x56ee77
56ee99:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56ee9d:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
56eea1:	3b cd                	cmp    %ebp,%ecx
56eea3:	7e 14                	jle    0x56eeb9
56eea5:	8b 00                	mov    (%eax),%eax
56eea7:	01 02                	add    %eax,(%edx)