4158f0:	89 45 e8             	mov    %eax,-0x18(%ebp)
4158f3:	e8 94 25 ff ff       	call   0x407e8c
4158f8:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4158fc:	75 04                	jne    0x415902
4158fe:	c6 45 fb 01          	movb   $0x1,-0x5(%ebp)
415902:	8d 4d bc             	lea    -0x44(%ebp),%ecx
415905:	e8 bd 1e ff ff       	call   0x4077c7
41590a:	8d 4d cc             	lea    -0x34(%ebp),%ecx
41590d:	e8 b5 1e ff ff       	call   0x4077c7
415912:	33 d2                	xor    %edx,%edx
415914:	33 db                	xor    %ebx,%ebx
415916:	89 55 f0             	mov    %edx,-0x10(%ebp)
415919:	89 5d f4             	mov    %ebx,-0xc(%ebp)
41591c:	8d 64 24 00          	lea    0x0(%esp),%esp
415920:	80 7d fb 00          	cmpb   $0x0,-0x5(%ebp)
415924:	0f 84 9a af 03 00    	je     0x4508c4
41592a:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
41592e:	0f 84 13 02 00 00    	je     0x415b47
415934:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
415938:	0f 84 09 02 00 00    	je     0x415b47
41593e:	83 fa ff             	cmp    $0xffffffff,%edx
415941:	0f 84 00 02 00 00    	je     0x415b47
415947:	8b 4e 1c             	mov    0x1c(%esi),%ecx
41594a:	3b d1                	cmp    %ecx,%edx
41594c:	0f 8f f5 01 00 00    	jg     0x415b47
415952:	ff 76 24             	push   0x24(%esi)
415955:	8b 46 34             	mov    0x34(%esi),%eax
415958:	ff 76 20             	push   0x20(%esi)
41595b:	0b 46 2c             	or     0x2c(%esi),%eax
41595e:	50                   	push   %eax
41595f:	52                   	push   %edx
415960:	8b 56 18             	mov    0x18(%esi),%edx
415963:	51                   	push   %ecx
415964:	ff 36                	push   (%esi)
415966:	8b 4e 14             	mov    0x14(%esi),%ecx
415969:	e8 d2 e7 ff ff       	call   0x414140
41596e:	8b c8                	mov    %eax,%ecx
415970:	83 c4 18             	add    $0x18,%esp
415973:	89 4e 28             	mov    %ecx,0x28(%esi)
415976:	85 c9                	test   %ecx,%ecx
415978:	0f 8e ba 01 00 00    	jle    0x415b38
41597e:	8b 46 20             	mov    0x20(%esi),%eax
415981:	8b 50 04             	mov    0x4(%eax),%edx
415984:	c7 46 2c 00 00 00 00 	movl   $0x0,0x2c(%esi)
41598b:	8b 38                	mov    (%eax),%edi
41598d:	3b 78 04             	cmp    0x4(%eax),%edi
415990:	89 7d e0             	mov    %edi,-0x20(%ebp)
415993:	8b 7d 10             	mov    0x10(%ebp),%edi
415996:	0f 84 37 af 03 00    	je     0x4508d3
41599c:	89 55 f0             	mov    %edx,-0x10(%ebp)
41599f:	85 c9                	test   %ecx,%ecx
4159a1:	0f 84 a0 01 00 00    	je     0x415b47
4159a7:	8b 46 20             	mov    0x20(%esi),%eax
4159aa:	8b 18                	mov    (%eax),%ebx
4159ac:	8b 45 f4             	mov    -0xc(%ebp),%eax
4159af:	2b d8                	sub    %eax,%ebx
4159b1:	0f 84 2a 01 00 00    	je     0x415ae1
4159b7:	8b 4e 04             	mov    0x4(%esi),%ecx
4159ba:	3b c1                	cmp    %ecx,%eax
4159bc:	0f 83 1f 01 00 00    	jae    0x415ae1
4159c2:	83 fb ff             	cmp    $0xffffffff,%ebx
4159c5:	0f 84 b6 01 00 00    	je     0x415b81
4159cb:	03 c3                	add    %ebx,%eax
4159cd:	3b c1                	cmp    %ecx,%eax
4159cf:	0f 87 a9 01 00 00    	ja     0x415b7e
4159d5:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4159d8:	8b 01                	mov    (%ecx),%eax
4159da:	83 f8 01             	cmp    $0x1,%eax
4159dd:	0f 8f 2a af 03 00    	jg     0x45090d
4159e3:	8d 43 01             	lea    0x1(%ebx),%eax
4159e6:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
4159e9:	0f 82 06 01 00 00    	jb     0x415af5
4159ef:	8b 45 ec             	mov    -0x14(%ebp),%eax
4159f2:	8d 34 1b             	lea    (%ebx,%ebx,1),%esi
4159f5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4159f8:	56                   	push   %esi
4159f9:	89 5d d0             	mov    %ebx,-0x30(%ebp)
4159fc:	8b 00                	mov    (%eax),%eax
4159fe:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415a01:	50                   	push   %eax
415a02:	ff 75 cc             	push   -0x34(%ebp)
415a05:	e8 76 b6 00 00       	call   0x421080
415a0a:	8b 45 cc             	mov    -0x34(%ebp),%eax
415a0d:	83 c4 0c             	add    $0xc,%esp
415a10:	33 c9                	xor    %ecx,%ecx
415a12:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
415a16:	8b 75 ec             	mov    -0x14(%ebp),%esi
415a19:	8d 45 cc             	lea    -0x34(%ebp),%eax
415a1c:	3b f8                	cmp    %eax,%edi
415a1e:	0f 84 1e af 03 00    	je     0x450942
415a24:	85 db                	test   %ebx,%ebx
415a26:	74 43                	je     0x415a6b
415a28:	8b 4f 0c             	mov    0xc(%edi),%ecx
415a2b:	8b 01                	mov    (%ecx),%eax
415a2d:	83 f8 01             	cmp    $0x1,%eax
415a30:	0f 8f 2d af 03 00    	jg     0x450963
415a36:	8b 47 04             	mov    0x4(%edi),%eax
415a39:	40                   	inc    %eax
415a3a:	03 c3                	add    %ebx,%eax
415a3c:	39 47 08             	cmp    %eax,0x8(%edi)
415a3f:	0f 82 72 af 03 00    	jb     0x4509b7
415a45:	8b 4f 04             	mov    0x4(%edi),%ecx
415a48:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
415a4b:	50                   	push   %eax
415a4c:	8b 07                	mov    (%edi),%eax
415a4e:	ff 75 cc             	push   -0x34(%ebp)
415a51:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415a54:	50                   	push   %eax
415a55:	e8 26 b6 00 00       	call   0x421080
415a5a:	01 5f 04             	add    %ebx,0x4(%edi)
415a5d:	83 c4 0c             	add    $0xc,%esp
415a60:	8b 4f 04             	mov    0x4(%edi),%ecx
415a63:	33 d2                	xor    %edx,%edx
415a65:	8b 07                	mov    (%edi),%eax
415a67:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
415a6b:	8d 45 bc             	lea    -0x44(%ebp),%eax
415a6e:	8b ce                	mov    %esi,%ecx
415a70:	50                   	push   %eax
415a71:	ff 75 08             	push   0x8(%ebp)
415a74:	e8 07 fc ff ff       	call   0x415680
415a79:	01 45 e8             	add    %eax,-0x18(%ebp)
415a7c:	8d 45 bc             	lea    -0x44(%ebp),%eax
415a7f:	3b f8                	cmp    %eax,%edi
415a81:	0f 84 51 b0 03 00    	je     0x450ad8
415a87:	8b 5d c0             	mov    -0x40(%ebp),%ebx
415a8a:	85 db                	test   %ebx,%ebx
415a8c:	74 43                	je     0x415ad1
415a8e:	8b 4f 0c             	mov    0xc(%edi),%ecx
415a91:	8b 01                	mov    (%ecx),%eax
415a93:	83 f8 01             	cmp    $0x1,%eax
415a96:	0f 8f 5d b0 03 00    	jg     0x450af9
415a9c:	8b 47 04             	mov    0x4(%edi),%eax
415a9f:	40                   	inc    %eax
415aa0:	03 c3                	add    %ebx,%eax
415aa2:	39 47 08             	cmp    %eax,0x8(%edi)
415aa5:	0f 82 a2 b0 03 00    	jb     0x450b4d
415aab:	8b 4f 04             	mov    0x4(%edi),%ecx
415aae:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
415ab1:	50                   	push   %eax
415ab2:	8b 07                	mov    (%edi),%eax
415ab4:	ff 75 bc             	push   -0x44(%ebp)
415ab7:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415aba:	50                   	push   %eax
415abb:	e8 c0 b5 00 00       	call   0x421080
415ac0:	01 5f 04             	add    %ebx,0x4(%edi)
415ac3:	83 c4 0c             	add    $0xc,%esp
415ac6:	8b 4f 04             	mov    0x4(%edi),%ecx
415ac9:	33 d2                	xor    %edx,%edx
415acb:	8b 07                	mov    (%edi),%eax
415acd:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
415ad1:	8b 55 f0             	mov    -0x10(%ebp),%edx
415ad4:	8b da                	mov    %edx,%ebx
415ad6:	ff 4d 0c             	decl   0xc(%ebp)
415ad9:	89 55 f4             	mov    %edx,-0xc(%ebp)
415adc:	e9 3f fe ff ff       	jmp    0x415920
415ae1:	6a ff                	push   $0xffffffff
415ae3:	6a 00                	push   $0x0
415ae5:	8d 4d cc             	lea    -0x34(%ebp),%ecx
415ae8:	e8 9f 23 ff ff       	call   0x407e8c
415aed:	8b 5d d0             	mov    -0x30(%ebp),%ebx
415af0:	e9 24 ff ff ff       	jmp    0x415a19
415af5:	50                   	push   %eax
415af6:	e8 75 26 ff ff       	call   0x408170
415afb:	89 45 d4             	mov    %eax,-0x2c(%ebp)
415afe:	8b 45 cc             	mov    -0x34(%ebp),%eax
415b01:	85 c0                	test   %eax,%eax
415b03:	74 09                	je     0x415b0e
415b05:	50                   	push   %eax
415b06:	e8 61 b5 00 00       	call   0x42106c
415b0b:	83 c4 04             	add    $0x4,%esp
415b0e:	8b 45 d4             	mov    -0x2c(%ebp),%eax
415b11:	33 c9                	xor    %ecx,%ecx
415b13:	ba 02 00 00 00       	mov    $0x2,%edx
415b18:	f7 e2                	mul    %edx
415b1a:	0f 90 c1             	seto   %cl
415b1d:	f7 d9                	neg    %ecx
415b1f:	0b c8                	or     %eax,%ecx
415b21:	51                   	push   %ecx
415b22:	e8 cf b4 00 00       	call   0x420ff6
415b27:	83 c4 04             	add    $0x4,%esp
415b2a:	33 c9                	xor    %ecx,%ecx
415b2c:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
415b30:	89 45 cc             	mov    %eax,-0x34(%ebp)
415b33:	e9 b7 fe ff ff       	jmp    0x4159ef
415b38:	83 f9 ff             	cmp    $0xffffffff,%ecx
415b3b:	75 0a                	jne    0x415b47
415b3d:	83 7e 2c 00          	cmpl   $0x0,0x2c(%esi)
415b41:	0f 85 a8 ad 03 00    	jne    0x4508ef
415b47:	8b 46 1c             	mov    0x1c(%esi),%eax
415b4a:	8d 4d cc             	lea    -0x34(%ebp),%ecx
415b4d:	2b c3                	sub    %ebx,%eax
415b4f:	50                   	push   %eax
415b50:	53                   	push   %ebx
415b51:	56                   	push   %esi
415b52:	e8 54 1e ff ff       	call   0x4079ab
415b57:	8d 45 cc             	lea    -0x34(%ebp),%eax
415b5a:	8b cf                	mov    %edi,%ecx
415b5c:	50                   	push   %eax
415b5d:	e8 2c 21 ff ff       	call   0x407c8e
415b62:	8d 4d cc             	lea    -0x34(%ebp),%ecx
415b65:	e8 fa fe fe ff       	call   0x405a64
415b6a:	8d 4d bc             	lea    -0x44(%ebp),%ecx
415b6d:	e8 f2 fe fe ff       	call   0x405a64
415b72:	8b 45 e8             	mov    -0x18(%ebp),%eax
415b75:	5f                   	pop    %edi
415b76:	5e                   	pop    %esi
415b77:	5b                   	pop    %ebx
415b78:	8b e5                	mov    %ebp,%esp
415b7a:	5d                   	pop    %ebp
415b7b:	c2 0c 00             	ret    $0xc
415b7e:	8b 45 f4             	mov    -0xc(%ebp),%eax
415b81:	8b d9                	mov    %ecx,%ebx
415b83:	2b d8                	sub    %eax,%ebx
415b85:	e9 4b fe ff ff       	jmp    0x4159d5
415b8a:	33 c0                	xor    %eax,%eax
415b8c:	eb e7                	jmp    0x415b75
415b8e:	55                   	push   %ebp
415b8f:	8b ec                	mov    %esp,%ebp
415b91:	83 ec 10             	sub    $0x10,%esp
415b94:	53                   	push   %ebx
415b95:	56                   	push   %esi
415b96:	8b f1                	mov    %ecx,%esi
415b98:	57                   	push   %edi
415b99:	33 ff                	xor    %edi,%edi
415b9b:	39 7e 14             	cmp    %edi,0x14(%esi)
415b9e:	74 59                	je     0x415bf9
415ba0:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
415ba4:	74 53                	je     0x415bf9
415ba6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
415ba9:	e8 da ae 00 00       	call   0x420a88
415bae:	6a 01                	push   $0x1
415bb0:	8d 45 08             	lea    0x8(%ebp),%eax
415bb3:	8b ce                	mov    %esi,%ecx
415bb5:	50                   	push   %eax
415bb6:	e8 49 fa ff ff       	call   0x415604
415bbb:	85 c0                	test   %eax,%eax
415bbd:	7e 3a                	jle    0x415bf9
415bbf:	39 7e 28             	cmp    %edi,0x28(%esi)
415bc2:	7e 29                	jle    0x415bed
415bc4:	8b df                	mov    %edi,%ebx
415bc6:	8b 46 20             	mov    0x20(%esi),%eax
415bc9:	8b 0c 18             	mov    (%eax,%ebx,1),%ecx
415bcc:	8b 44 18 04          	mov    0x4(%eax,%ebx,1),%eax
415bd0:	2b c1                	sub    %ecx,%eax
415bd2:	89 4d f4             	mov    %ecx,-0xc(%ebp)
415bd5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
415bd8:	89 45 f8             	mov    %eax,-0x8(%ebp)
415bdb:	8d 45 f4             	lea    -0xc(%ebp),%eax
415bde:	50                   	push   %eax
415bdf:	e8 31 ae 00 00       	call   0x420a15
415be4:	47                   	inc    %edi
415be5:	8d 5b 08             	lea    0x8(%ebx),%ebx
415be8:	3b 7e 28             	cmp    0x28(%esi),%edi
415beb:	7c d9                	jl     0x415bc6
415bed:	8b 46 28             	mov    0x28(%esi),%eax
415bf0:	5f                   	pop    %edi
415bf1:	5e                   	pop    %esi
415bf2:	5b                   	pop    %ebx
415bf3:	8b e5                	mov    %ebp,%esp
415bf5:	5d                   	pop    %ebp
415bf6:	c2 0c 00             	ret    $0xc
415bf9:	33 c0                	xor    %eax,%eax
415bfb:	eb f3                	jmp    0x415bf0
415bfd:	56                   	push   %esi
415bfe:	8b f1                	mov    %ecx,%esi
415c00:	e8 c2 1b ff ff       	call   0x4077c7
415c05:	33 c0                	xor    %eax,%eax
415c07:	c7 46 30 00 28 00 00 	movl   $0x2800,0x30(%esi)
415c0e:	88 46 10             	mov    %al,0x10(%esi)
415c11:	89 46 14             	mov    %eax,0x14(%esi)
415c14:	89 46 18             	mov    %eax,0x18(%esi)
415c17:	89 46 20             	mov    %eax,0x20(%esi)
415c1a:	89 46 24             	mov    %eax,0x24(%esi)
415c1d:	89 46 28             	mov    %eax,0x28(%esi)
415c20:	89 46 2c             	mov    %eax,0x2c(%esi)
415c23:	8b c6                	mov    %esi,%eax
415c25:	c7 46 34 00 20 00 00 	movl   $0x2000,0x34(%esi)
415c2c:	5e                   	pop    %esi
415c2d:	c3                   	ret
415c2e:	53                   	push   %ebx
415c2f:	56                   	push   %esi
415c30:	8b f1                	mov    %ecx,%esi
415c32:	83 7e 20 00          	cmpl   $0x0,0x20(%esi)
415c36:	75 2f                	jne    0x415c67
415c38:	33 db                	xor    %ebx,%ebx
415c3a:	8b ce                	mov    %esi,%ecx
415c3c:	89 5e 20             	mov    %ebx,0x20(%esi)
415c3f:	89 5e 18             	mov    %ebx,0x18(%esi)
415c42:	89 5e 14             	mov    %ebx,0x14(%esi)
415c45:	89 5e 24             	mov    %ebx,0x24(%esi)
415c48:	89 5e 28             	mov    %ebx,0x28(%esi)
415c4b:	89 5e 2c             	mov    %ebx,0x2c(%esi)
415c4e:	e8 99 22 ff ff       	call   0x407eec
415c53:	88 5e 10             	mov    %bl,0x10(%esi)
415c56:	c7 46 30 00 28 00 00 	movl   $0x2800,0x30(%esi)
415c5d:	c7 46 34 00 20 00 00 	movl   $0x2000,0x34(%esi)
415c64:	5e                   	pop    %esi
415c65:	5b                   	pop    %ebx
415c66:	c3                   	ret
415c67:	ff 76 20             	push   0x20(%esi)
415c6a:	e8 fd b3 00 00       	call   0x42106c
415c6f:	59                   	pop    %ecx
415c70:	eb c6                	jmp    0x415c38
415c72:	55                   	push   %ebp
415c73:	8b ec                	mov    %esp,%ebp
415c75:	51                   	push   %ecx
415c76:	53                   	push   %ebx
415c77:	56                   	push   %esi
415c78:	57                   	push   %edi
415c79:	8b f1                	mov    %ecx,%esi
415c7b:	e8 ae ff ff ff       	call   0x415c2e
415c80:	8b 5d 08             	mov    0x8(%ebp),%ebx
415c83:	53                   	push   %ebx
415c84:	e8 89 01 00 00       	call   0x415e12
415c89:	8b c8                	mov    %eax,%ecx
415c8b:	85 c9                	test   %ecx,%ecx
415c8d:	74 39                	je     0x415cc8
415c8f:	8b 41 14             	mov    0x14(%ecx),%eax
415c92:	8d 7e 24             	lea    0x24(%esi),%edi
415c95:	89 46 14             	mov    %eax,0x14(%esi)
415c98:	8b 41 18             	mov    0x18(%ecx),%eax
415c9b:	89 46 18             	mov    %eax,0x18(%esi)
415c9e:	8b 49 1c             	mov    0x1c(%ecx),%ecx
415ca1:	89 0f                	mov    %ecx,(%edi)
415ca3:	8b 07                	mov    (%edi),%eax
415ca5:	33 c9                	xor    %ecx,%ecx
415ca7:	6a 04                	push   $0x4
415ca9:	5a                   	pop    %edx
415caa:	f7 e2                	mul    %edx
415cac:	0f 90 c1             	seto   %cl
415caf:	f7 d9                	neg    %ecx
415cb1:	0b c8                	or     %eax,%ecx
415cb3:	51                   	push   %ecx
415cb4:	e8 3d b3 00 00       	call   0x420ff6
415cb9:	89 46 20             	mov    %eax,0x20(%esi)
415cbc:	33 c0                	xor    %eax,%eax
415cbe:	59                   	pop    %ecx
415cbf:	5f                   	pop    %edi
415cc0:	5e                   	pop    %esi
415cc1:	5b                   	pop    %ebx
415cc2:	8b e5                	mov    %ebp,%esp
415cc4:	5d                   	pop    %ebp
415cc5:	c2 08 00             	ret    $0x8
415cc8:	8b 56 30             	mov    0x30(%esi),%edx
415ccb:	8d 45 08             	lea    0x8(%ebp),%eax
415cce:	51                   	push   %ecx
415ccf:	50                   	push   %eax
415cd0:	8d 45 fc             	lea    -0x4(%ebp),%eax
415cd3:	50                   	push   %eax
415cd4:	51                   	push   %ecx