56ba53:	8b 48 04             	mov    0x4(%eax),%ecx
56ba56:	3b d1                	cmp    %ecx,%edx
56ba58:	7d 0d                	jge    0x56ba67
56ba5a:	33 c9                	xor    %ecx,%ecx
56ba5c:	8a 4b 02             	mov    0x2(%ebx),%cl
56ba5f:	3b d1                	cmp    %ecx,%edx
56ba61:	0f 8c 6e ff ff ff    	jl     0x56b9d5
56ba67:	ff 40 24             	incl   0x24(%eax)
56ba6a:	8b 50 24             	mov    0x24(%eax),%edx
56ba6d:	8b 08                	mov    (%eax),%ecx
56ba6f:	3b d1                	cmp    %ecx,%edx
56ba71:	7d 0c                	jge    0x56ba7f
56ba73:	0f b7 4b 08          	movzwl 0x8(%ebx),%ecx
56ba77:	3b d1                	cmp    %ecx,%edx
56ba79:	0f 8c 4c ff ff ff    	jl     0x56b9cb
56ba7f:	b8 01 00 00 00       	mov    $0x1,%eax
56ba84:	5e                   	pop    %esi
56ba85:	5b                   	pop    %ebx
56ba86:	c3                   	ret
56ba87:	90                   	nop
56ba88:	53                   	push   %ebx
56ba89:	8b d8                	mov    %eax,%ebx
56ba8b:	56                   	push   %esi
56ba8c:	8b 43 60             	mov    0x60(%ebx),%eax
56ba8f:	8b 73 48             	mov    0x48(%ebx),%esi
56ba92:	85 c0                	test   %eax,%eax
56ba94:	75 33                	jne    0x56bac9
56ba96:	8b 53 14             	mov    0x14(%ebx),%edx
56ba99:	8b 0a                	mov    (%edx),%ecx
56ba9b:	8b 43 20             	mov    0x20(%ebx),%eax
56ba9e:	3b c8                	cmp    %eax,%ecx
56baa0:	7f 17                	jg     0x56bab9
56baa2:	68 ef 00 00 00       	push   $0xef
56baa7:	68 ac fe 69 00       	push   $0x69feac
56baac:	68 8c fe 69 00       	push   $0x69fe8c
56bab1:	e8 8a f0 fe ff       	call   0x55ab40
56bab6:	83 c4 0c             	add    $0xc,%esp
56bab9:	8b 53 14             	mov    0x14(%ebx),%edx
56babc:	8b 42 04             	mov    0x4(%edx),%eax
56babf:	8b 53 20             	mov    0x20(%ebx),%edx
56bac2:	c1 e2 02             	shl    $0x2,%edx
56bac5:	03 c2                	add    %edx,%eax
56bac7:	eb 66                	jmp    0x56bb2f
56bac9:	33 c9                	xor    %ecx,%ecx
56bacb:	89 4b 60             	mov    %ecx,0x60(%ebx)
56bace:	33 c0                	xor    %eax,%eax
56bad0:	8a 46 01             	mov    0x1(%esi),%al
56bad3:	89 43 1c             	mov    %eax,0x1c(%ebx)
56bad6:	e9 9a 00 00 00       	jmp    0x56bb75
56badb:	33 d2                	xor    %edx,%edx
56badd:	89 53 24             	mov    %edx,0x24(%ebx)
56bae0:	eb 7b                	jmp    0x56bb5d
56bae2:	0f b7 46 04          	movzwl 0x4(%esi),%eax
56bae6:	89 43 18             	mov    %eax,0x18(%ebx)
56bae9:	c1 e0 04             	shl    $0x4,%eax
56baec:	8b 53 0c             	mov    0xc(%ebx),%edx
56baef:	03 c2                	add    %edx,%eax
56baf1:	89 43 10             	mov    %eax,0x10(%ebx)
56baf4:	eb 52                	jmp    0x56bb48
56baf6:	8b 43 10             	mov    0x10(%ebx),%eax
56baf9:	8b 08                	mov    (%eax),%ecx
56bafb:	8b 53 1c             	mov    0x1c(%ebx),%edx
56bafe:	3b ca                	cmp    %edx,%ecx
56bb00:	7e 3f                	jle    0x56bb41
56bb02:	c1 e2 02             	shl    $0x2,%edx
56bb05:	8b 40 04             	mov    0x4(%eax),%eax
56bb08:	8d 14 92             	lea    (%edx,%edx,4),%edx
56bb0b:	03 c2                	add    %edx,%eax
56bb0d:	33 c9                	xor    %ecx,%ecx
56bb0f:	89 43 14             	mov    %eax,0x14(%ebx)
56bb12:	89 4b 20             	mov    %ecx,0x20(%ebx)
56bb15:	8b 43 14             	mov    0x14(%ebx),%eax
56bb18:	8b 40 04             	mov    0x4(%eax),%eax
56bb1b:	eb 18                	jmp    0x56bb35
56bb1d:	8b 53 24             	mov    0x24(%ebx),%edx
56bb20:	8b 08                	mov    (%eax),%ecx
56bb22:	3b d1                	cmp    %ecx,%edx
56bb24:	7c 09                	jl     0x56bb2f
56bb26:	89 10                	mov    %edx,(%eax)
56bb28:	ff 00                	incl   (%eax)
56bb2a:	33 c0                	xor    %eax,%eax
56bb2c:	5e                   	pop    %esi
56bb2d:	5b                   	pop    %ebx
56bb2e:	c3                   	ret
56bb2f:	ff 43 20             	incl   0x20(%ebx)
56bb32:	83 c0 04             	add    $0x4,%eax
56bb35:	8b 53 14             	mov    0x14(%ebx),%edx
56bb38:	8b 0a                	mov    (%edx),%ecx
56bb3a:	8b 53 20             	mov    0x20(%ebx),%edx
56bb3d:	3b ca                	cmp    %edx,%ecx
56bb3f:	7f dc                	jg     0x56bb1d
56bb41:	ff 43 18             	incl   0x18(%ebx)
56bb44:	83 43 10 10          	addl   $0x10,0x10(%ebx)
56bb48:	8b 43 18             	mov    0x18(%ebx),%eax
56bb4b:	8b 4b 08             	mov    0x8(%ebx),%ecx
56bb4e:	3b c1                	cmp    %ecx,%eax
56bb50:	7d 08                	jge    0x56bb5a
56bb52:	0f b7 56 06          	movzwl 0x6(%esi),%edx
56bb56:	3b c2                	cmp    %edx,%eax
56bb58:	7c 9c                	jl     0x56baf6
56bb5a:	ff 43 24             	incl   0x24(%ebx)
56bb5d:	8b 43 24             	mov    0x24(%ebx),%eax
56bb60:	8b 0b                	mov    (%ebx),%ecx
56bb62:	3b c1                	cmp    %ecx,%eax
56bb64:	7d 0c                	jge    0x56bb72
56bb66:	0f b7 56 08          	movzwl 0x8(%esi),%edx
56bb6a:	3b c2                	cmp    %edx,%eax
56bb6c:	0f 8c 70 ff ff ff    	jl     0x56bae2
56bb72:	ff 43 1c             	incl   0x1c(%ebx)
56bb75:	8b 43 1c             	mov    0x1c(%ebx),%eax
56bb78:	8b 4b 04             	mov    0x4(%ebx),%ecx
56bb7b:	3b c1                	cmp    %ecx,%eax
56bb7d:	7d 0d                	jge    0x56bb8c
56bb7f:	33 d2                	xor    %edx,%edx
56bb81:	8a 56 02             	mov    0x2(%esi),%dl
56bb84:	3b c2                	cmp    %edx,%eax
56bb86:	0f 8c 4f ff ff ff    	jl     0x56badb
56bb8c:	b8 01 00 00 00       	mov    $0x1,%eax
56bb91:	5e                   	pop    %esi
56bb92:	5b                   	pop    %ebx
56bb93:	c3                   	ret
56bb94:	53                   	push   %ebx
56bb95:	8b d8                	mov    %eax,%ebx
56bb97:	56                   	push   %esi
56bb98:	57                   	push   %edi
56bb99:	55                   	push   %ebp
56bb9a:	83 c4 e4             	add    $0xffffffe4,%esp
56bb9d:	8b 43 60             	mov    0x60(%ebx),%eax
56bba0:	8b 7b 48             	mov    0x48(%ebx),%edi
56bba3:	85 c0                	test   %eax,%eax
56bba5:	0f 84 a0 04 00 00    	je     0x56c04b
56bbab:	33 d2                	xor    %edx,%edx
56bbad:	89 53 30             	mov    %edx,0x30(%ebx)
56bbb0:	33 c9                	xor    %ecx,%ecx
56bbb2:	89 4b 34             	mov    %ecx,0x34(%ebx)
56bbb5:	33 c0                	xor    %eax,%eax
56bbb7:	89 44 24 04          	mov    %eax,0x4(%esp)
56bbbb:	8b 43 0c             	mov    0xc(%ebx),%eax
56bbbe:	e9 a3 00 00 00       	jmp    0x56bc66
56bbc3:	33 d2                	xor    %edx,%edx
56bbc5:	8b 48 04             	mov    0x4(%eax),%ecx
56bbc8:	89 0c 24             	mov    %ecx,(%esp)
56bbcb:	e9 85 00 00 00       	jmp    0x56bc55
56bbd0:	8b 0c 24             	mov    (%esp),%ecx
56bbd3:	8b 49 08             	mov    0x8(%ecx),%ecx
56bbd6:	8b 30                	mov    (%eax),%esi
56bbd8:	03 ce                	add    %esi,%ecx
56bbda:	2b ca                	sub    %edx,%ecx
56bbdc:	49                   	dec    %ecx
56bbdd:	be 01 00 00 00       	mov    $0x1,%esi
56bbe2:	d3 e6                	shl    %cl,%esi
56bbe4:	0f af 70 08          	imul   0x8(%eax),%esi
56bbe8:	89 74 24 08          	mov    %esi,0x8(%esp)
56bbec:	8b 0c 24             	mov    (%esp),%ecx
56bbef:	8b 49 0c             	mov    0xc(%ecx),%ecx
56bbf2:	8b 30                	mov    (%eax),%esi
56bbf4:	03 ce                	add    %esi,%ecx
56bbf6:	2b ca                	sub    %edx,%ecx
56bbf8:	49                   	dec    %ecx
56bbf9:	be 01 00 00 00       	mov    $0x1,%esi
56bbfe:	d3 e6                	shl    %cl,%esi
56bc00:	0f af 70 0c          	imul   0xc(%eax),%esi
56bc04:	89 74 24 0c          	mov    %esi,0xc(%esp)
56bc08:	8b 4b 30             	mov    0x30(%ebx),%ecx
56bc0b:	85 c9                	test   %ecx,%ecx
56bc0d:	75 06                	jne    0x56bc15
56bc0f:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56bc13:	eb 14                	jmp    0x56bc29
56bc15:	8b 4b 30             	mov    0x30(%ebx),%ecx
56bc18:	8b 74 24 08          	mov    0x8(%esp),%esi
56bc1c:	3b ce                	cmp    %esi,%ecx
56bc1e:	7d 05                	jge    0x56bc25
56bc20:	8b 4b 30             	mov    0x30(%ebx),%ecx
56bc23:	eb 04                	jmp    0x56bc29
56bc25:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56bc29:	89 4b 30             	mov    %ecx,0x30(%ebx)
56bc2c:	8b 4b 34             	mov    0x34(%ebx),%ecx
56bc2f:	85 c9                	test   %ecx,%ecx
56bc31:	75 06                	jne    0x56bc39
56bc33:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56bc37:	eb 14                	jmp    0x56bc4d
56bc39:	8b 4b 34             	mov    0x34(%ebx),%ecx
56bc3c:	8b 74 24 0c          	mov    0xc(%esp),%esi
56bc40:	3b ce                	cmp    %esi,%ecx
56bc42:	7d 05                	jge    0x56bc49
56bc44:	8b 4b 34             	mov    0x34(%ebx),%ecx
56bc47:	eb 04                	jmp    0x56bc4d
56bc49:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56bc4d:	89 4b 34             	mov    %ecx,0x34(%ebx)
56bc50:	42                   	inc    %edx
56bc51:	83 04 24 14          	addl   $0x14,(%esp)
56bc55:	8b 08                	mov    (%eax),%ecx
56bc57:	3b d1                	cmp    %ecx,%edx
56bc59:	0f 8c 71 ff ff ff    	jl     0x56bbd0
56bc5f:	ff 44 24 04          	incl   0x4(%esp)
56bc63:	83 c0 10             	add    $0x10,%eax
56bc66:	8b 54 24 04          	mov    0x4(%esp),%edx
56bc6a:	8b 4b 08             	mov    0x8(%ebx),%ecx
56bc6d:	3b d1                	cmp    %ecx,%edx
56bc6f:	0f 8c 4e ff ff ff    	jl     0x56bbc3
56bc75:	33 c0                	xor    %eax,%eax
56bc77:	89 43 60             	mov    %eax,0x60(%ebx)
56bc7a:	33 d2                	xor    %edx,%edx
56bc7c:	8a 57 01             	mov    0x1(%edi),%dl
56bc7f:	89 53 1c             	mov    %edx,0x1c(%ebx)
56bc82:	e9 31 04 00 00       	jmp    0x56c0b8
56bc87:	8b 43 3c             	mov    0x3c(%ebx),%eax
56bc8a:	89 43 2c             	mov    %eax,0x2c(%ebx)
56bc8d:	e9 15 04 00 00       	jmp    0x56c0a7
56bc92:	8b 53 38             	mov    0x38(%ebx),%edx
56bc95:	89 53 28             	mov    %edx,0x28(%ebx)
56bc98:	e9 ed 03 00 00       	jmp    0x56c08a
56bc9d:	0f b7 47 04          	movzwl 0x4(%edi),%eax
56bca1:	89 43 18             	mov    %eax,0x18(%ebx)
56bca4:	c1 e0 04             	shl    $0x4,%eax
56bca7:	8b 53 0c             	mov    0xc(%ebx),%edx
56bcaa:	03 c2                	add    %edx,%eax
56bcac:	89 43 10             	mov    %eax,0x10(%ebx)
56bcaf:	e9 b2 03 00 00       	jmp    0x56c066
56bcb4:	8b 53 10             	mov    0x10(%ebx),%edx
56bcb7:	8b 02                	mov    (%edx),%eax
56bcb9:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
56bcbc:	3b c1                	cmp    %ecx,%eax
56bcbe:	0f 8e 9b 03 00 00    	jle    0x56c05f
56bcc4:	8b 42 04             	mov    0x4(%edx),%eax
56bcc7:	8b d1                	mov    %ecx,%edx
56bcc9:	c1 e2 02             	shl    $0x2,%edx
56bccc:	8d 14 92             	lea    (%edx,%edx,4),%edx
56bccf:	03 c2                	add    %edx,%eax
56bcd1:	89 43 14             	mov    %eax,0x14(%ebx)
56bcd4:	8b 08                	mov    (%eax),%ecx
56bcd6:	85 c9                	test   %ecx,%ecx
56bcd8:	0f 84 81 03 00 00    	je     0x56c05f
56bcde:	8b 53 10             	mov    0x10(%ebx),%edx
56bce1:	8b 68 08             	mov    0x8(%eax),%ebp
56bce4:	8b 40 0c             	mov    0xc(%eax),%eax
56bce7:	8b 32                	mov    (%edx),%esi
56bce9:	8b 53 1c             	mov    0x1c(%ebx),%edx
56bcec:	4e                   	dec    %esi
56bced:	2b f2                	sub    %edx,%esi
56bcef:	03 c6                	add    %esi,%eax
56bcf1:	03 ee                	add    %esi,%ebp
56bcf3:	89 44 24 10          	mov    %eax,0x10(%esp)
56bcf7:	8b 53 38             	mov    0x38(%ebx),%edx
56bcfa:	85 d2                	test   %edx,%edx
56bcfc:	7c 0e                	jl     0x56bd0c
56bcfe:	8b ce                	mov    %esi,%ecx
56bd00:	8b 43 10             	mov    0x10(%ebx),%eax
56bd03:	8b 50 08             	mov    0x8(%eax),%edx
56bd06:	d3 e2                	shl    %cl,%edx
56bd08:	85 d2                	test   %edx,%edx
56bd0a:	7f 17                	jg     0x56bd23
56bd0c:	68 4c 01 00 00       	push   $0x14c
56bd11:	68 e6 fe 69 00       	push   $0x69fee6
56bd16:	68 b8 fe 69 00       	push   $0x69feb8
56bd1b:	e8 20 ee fe ff       	call   0x55ab40
56bd20:	83 c4 0c             	add    $0xc,%esp
56bd23:	8b 43 10             	mov    0x10(%ebx),%eax
56bd26:	8b ce                	mov    %esi,%ecx
56bd28:	8b 53 38             	mov    0x38(%ebx),%edx
56bd2b:	8b 40 08             	mov    0x8(%eax),%eax
56bd2e:	d3 e0                	shl    %cl,%eax
56bd30:	03 c2                	add    %edx,%eax
56bd32:	8b 53 10             	mov    0x10(%ebx),%edx
56bd35:	8b ce                	mov    %esi,%ecx
56bd37:	48                   	dec    %eax
56bd38:	8b 52 08             	mov    0x8(%edx),%edx
56bd3b:	d3 e2                	shl    %cl,%edx
56bd3d:	8b ca                	mov    %edx,%ecx
56bd3f:	99                   	cltd
56bd40:	f7 f9                	idiv   %ecx
56bd42:	89 44 24 14          	mov    %eax,0x14(%esp)
56bd46:	8b 43 3c             	mov    0x3c(%ebx),%eax
56bd49:	85 c0                	test   %eax,%eax
56bd4b:	7c 0e                	jl     0x56bd5b
56bd4d:	8b ce                	mov    %esi,%ecx
56bd4f:	8b 43 10             	mov    0x10(%ebx),%eax
56bd52:	8b 50 0c             	mov    0xc(%eax),%edx
56bd55:	d3 e2                	shl    %cl,%edx
56bd57:	85 d2                	test   %edx,%edx
56bd59:	7f 17                	jg     0x56bd72
56bd5b:	68 4d 01 00 00       	push   $0x14d
56bd60:	68 20 ff 69 00       	push   $0x69ff20
56bd65:	68 f2 fe 69 00       	push   $0x69fef2
56bd6a:	e8 d1 ed fe ff       	call   0x55ab40
56bd6f:	83 c4 0c             	add    $0xc,%esp
56bd72:	8b 43 10             	mov    0x10(%ebx),%eax
56bd75:	8b ce                	mov    %esi,%ecx
56bd77:	8b 53 3c             	mov    0x3c(%ebx),%edx
56bd7a:	8b 40 0c             	mov    0xc(%eax),%eax
56bd7d:	d3 e0                	shl    %cl,%eax
56bd7f:	03 c2                	add    %edx,%eax
56bd81:	8b 53 10             	mov    0x10(%ebx),%edx
56bd84:	8b ce                	mov    %esi,%ecx
56bd86:	48                   	dec    %eax
56bd87:	8b 52 0c             	mov    0xc(%edx),%edx
56bd8a:	d3 e2                	shl    %cl,%edx
56bd8c:	8b ca                	mov    %edx,%ecx
56bd8e:	99                   	cltd
56bd8f:	f7 f9                	idiv   %ecx
56bd91:	89 44 24 18          	mov    %eax,0x18(%esp)
56bd95:	8b 43 28             	mov    0x28(%ebx),%eax
56bd98:	8b 53 38             	mov    0x38(%ebx),%edx
56bd9b:	3b c2                	cmp    %edx,%eax
56bd9d:	75 1b                	jne    0x56bdba
56bd9f:	8b ce                	mov    %esi,%ecx
56bda1:	8b 44 24 14          	mov    0x14(%esp),%eax
56bda5:	d3 e0                	shl    %cl,%eax
56bda7:	8b cd                	mov    %ebp,%ecx
56bda9:	ba 01 00 00 00       	mov    $0x1,%edx
56bdae:	d3 e2                	shl    %cl,%edx
56bdb0:	8b ca                	mov    %edx,%ecx
56bdb2:	33 d2                	xor    %edx,%edx
56bdb4:	f7 f1                	div    %ecx
56bdb6:	85 d2                	test   %edx,%edx
56bdb8:	75 1b                	jne    0x56bdd5
56bdba:	8b cd                	mov    %ebp,%ecx
56bdbc:	b8 01 00 00 00       	mov    $0x1,%eax
56bdc1:	d3 e0                	shl    %cl,%eax
56bdc3:	50                   	push   %eax
56bdc4:	8b 43 28             	mov    0x28(%ebx),%eax
56bdc7:	5a                   	pop    %edx
56bdc8:	8b ca                	mov    %edx,%ecx
56bdca:	99                   	cltd
56bdcb:	f7 f9                	idiv   %ecx
56bdcd:	85 d2                	test   %edx,%edx
56bdcf:	0f 85 8a 02 00 00    	jne    0x56c05f
56bdd5:	8b 6b 2c             	mov    0x2c(%ebx),%ebp
56bdd8:	8b 43 3c             	mov    0x3c(%ebx),%eax
56bddb:	3b e8                	cmp    %eax,%ebp
56bddd:	75 1d                	jne    0x56bdfc
56bddf:	8b ce                	mov    %esi,%ecx
56bde1:	8b 44 24 18          	mov    0x18(%esp),%eax
56bde5:	d3 e0                	shl    %cl,%eax
56bde7:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56bdeb:	ba 01 00 00 00       	mov    $0x1,%edx
56bdf0:	d3 e2                	shl    %cl,%edx
56bdf2:	8b ca                	mov    %edx,%ecx
56bdf4:	33 d2                	xor    %edx,%edx
56bdf6:	f7 f1                	div    %ecx
56bdf8:	85 d2                	test   %edx,%edx
56bdfa:	75 1c                	jne    0x56be18
56bdfc:	8b 4c 24 10          	mov    0x10(%esp),%ecx
56be00:	b8 01 00 00 00       	mov    $0x1,%eax
56be05:	d3 e0                	shl    %cl,%eax
56be07:	50                   	push   %eax
56be08:	8b c5                	mov    %ebp,%eax
56be0a:	5a                   	pop    %edx
56be0b:	8b ca                	mov    %edx,%ecx
56be0d:	99                   	cltd