40d9f8:	89 75 04             	mov    %esi,0x4(%ebp)
40d9fb:	c7 45 08 ff ff ff 7f 	movl   $0x7fffffff,0x8(%ebp)
40da02:	89 6d 00             	mov    %ebp,0x0(%ebp)
40da05:	0f b6 c3             	movzbl %bl,%eax
40da08:	8d 44 87 04          	lea    0x4(%edi,%eax,4),%eax
40da0c:	8b d5                	mov    %ebp,%edx
40da0e:	e8 15 ff ff ff       	call   0x40d928
40da13:	89 45 00             	mov    %eax,0x0(%ebp)
40da16:	8b 04 24             	mov    (%esp),%eax
40da19:	89 28                	mov    %ebp,(%eax)
40da1b:	5a                   	pop    %edx
40da1c:	5d                   	pop    %ebp
40da1d:	5f                   	pop    %edi
40da1e:	5e                   	pop    %esi
40da1f:	5b                   	pop    %ebx
40da20:	c3                   	ret
40da21:	8d 40 00             	lea    0x0(%eax),%eax
40da24:	8b 02                	mov    (%edx),%eax
40da26:	33 c9                	xor    %ecx,%ecx
40da28:	89 48 04             	mov    %ecx,0x4(%eax)
40da2b:	8b 02                	mov    (%edx),%eax
40da2d:	33 d2                	xor    %edx,%edx
40da2f:	89 50 08             	mov    %edx,0x8(%eax)
40da32:	c3                   	ret
40da33:	90                   	nop
40da34:	53                   	push   %ebx
40da35:	56                   	push   %esi
40da36:	8b d8                	mov    %eax,%ebx
40da38:	8b c3                	mov    %ebx,%eax
40da3a:	e8 51 ff ff ff       	call   0x40d990
40da3f:	0f b6 c0             	movzbl %al,%eax
40da42:	8b 5c 83 04          	mov    0x4(%ebx,%eax,4),%ebx
40da46:	85 db                	test   %ebx,%ebx
40da48:	74 27                	je     0x40da71
40da4a:	8d 43 08             	lea    0x8(%ebx),%eax
40da4d:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40da52:	e8 d1 fe ff ff       	call   0x40d928
40da57:	8b f0                	mov    %eax,%esi
40da59:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40da5f:	74 0a                	je     0x40da6b
40da61:	e8 22 8f ff ff       	call   0x406988
40da66:	89 43 04             	mov    %eax,0x4(%ebx)
40da69:	eb 06                	jmp    0x40da71
40da6b:	8b 1b                	mov    (%ebx),%ebx
40da6d:	85 db                	test   %ebx,%ebx
40da6f:	75 d9                	jne    0x40da4a
40da71:	8b c3                	mov    %ebx,%eax
40da73:	5e                   	pop    %esi
40da74:	5b                   	pop    %ebx
40da75:	c3                   	ret
40da76:	8b c0                	mov    %eax,%eax
40da78:	53                   	push   %ebx
40da79:	56                   	push   %esi
40da7a:	84 d2                	test   %dl,%dl
40da7c:	74 08                	je     0x40da86
40da7e:	83 c4 f0             	add    $0xfffffff0,%esp
40da81:	e8 92 61 ff ff       	call   0x403c18
40da86:	8b da                	mov    %edx,%ebx
40da88:	8b f0                	mov    %eax,%esi
40da8a:	33 d2                	xor    %edx,%edx
40da8c:	8b c6                	mov    %esi,%eax
40da8e:	e8 31 5e ff ff       	call   0x4038c4
40da93:	c7 46 0c ff ff 00 00 	movl   $0xffff,0xc(%esi)
40da9a:	6a 00                	push   $0x0
40da9c:	6a ff                	push   $0xffffffff
40da9e:	6a ff                	push   $0xffffffff
40daa0:	6a 00                	push   $0x0
40daa2:	e8 79 8e ff ff       	call   0x406920
40daa7:	89 46 10             	mov    %eax,0x10(%esi)
40daaa:	6a 00                	push   $0x0
40daac:	6a 00                	push   $0x0
40daae:	6a 00                	push   $0x0
40dab0:	6a 00                	push   $0x0
40dab2:	e8 69 8e ff ff       	call   0x406920
40dab7:	89 46 14             	mov    %eax,0x14(%esi)
40daba:	c7 46 18 ff ff ff ff 	movl   $0xffffffff,0x18(%esi)
40dac1:	b2 01                	mov    $0x1,%dl
40dac3:	a1 8c 84 40 00       	mov    0x40848c,%eax
40dac8:	e8 f7 5d ff ff       	call   0x4038c4
40dacd:	89 46 20             	mov    %eax,0x20(%esi)
40dad0:	8b c6                	mov    %esi,%eax
40dad2:	84 db                	test   %bl,%bl
40dad4:	74 0f                	je     0x40dae5
40dad6:	e8 95 61 ff ff       	call   0x403c70
40dadb:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40dae2:	83 c4 0c             	add    $0xc,%esp
40dae5:	8b c6                	mov    %esi,%eax
40dae7:	5e                   	pop    %esi
40dae8:	5b                   	pop    %ebx
40dae9:	c3                   	ret
40daea:	8b c0                	mov    %eax,%eax
40daec:	53                   	push   %ebx
40daed:	56                   	push   %esi
40daee:	e8 cd 61 ff ff       	call   0x403cc0
40daf3:	8b da                	mov    %edx,%ebx
40daf5:	8b f0                	mov    %eax,%esi
40daf7:	8b c6                	mov    %esi,%eax
40daf9:	e8 7a 00 00 00       	call   0x40db78
40dafe:	8b d3                	mov    %ebx,%edx
40db00:	80 e2 fc             	and    $0xfc,%dl
40db03:	8b c6                	mov    %esi,%eax
40db05:	e8 da 5d ff ff       	call   0x4038e4
40db0a:	8b 46 10             	mov    0x10(%esi),%eax
40db0d:	50                   	push   %eax
40db0e:	e8 fd 8d ff ff       	call   0x406910
40db13:	8b 46 14             	mov    0x14(%esi),%eax
40db16:	50                   	push   %eax
40db17:	e8 f4 8d ff ff       	call   0x406910
40db1c:	8b 46 20             	mov    0x20(%esi),%eax
40db1f:	e8 d0 5d ff ff       	call   0x4038f4
40db24:	84 db                	test   %bl,%bl
40db26:	7e 07                	jle    0x40db2f
40db28:	8b c6                	mov    %esi,%eax
40db2a:	e8 39 61 ff ff       	call   0x403c68
40db2f:	5e                   	pop    %esi
40db30:	5b                   	pop    %ebx
40db31:	c3                   	ret
40db32:	8b c0                	mov    %eax,%eax
40db34:	8b 40 10             	mov    0x10(%eax),%eax
40db37:	50                   	push   %eax
40db38:	e8 4b 8f ff ff       	call   0x406a88
40db3d:	c3                   	ret
40db3e:	8b c0                	mov    %eax,%eax
40db40:	8b 40 10             	mov    0x10(%eax),%eax
40db43:	50                   	push   %eax
40db44:	e8 57 8f ff ff       	call   0x406aa0
40db49:	c3                   	ret
40db4a:	8b c0                	mov    %eax,%eax
40db4c:	8b 40 14             	mov    0x14(%eax),%eax
40db4f:	50                   	push   %eax
40db50:	e8 4b 8f ff ff       	call   0x406aa0
40db55:	c3                   	ret
40db56:	8b c0                	mov    %eax,%eax
40db58:	8b 50 18             	mov    0x18(%eax),%edx
40db5b:	52                   	push   %edx
40db5c:	8b 40 10             	mov    0x10(%eax),%eax
40db5f:	50                   	push   %eax
40db60:	e8 73 8f ff ff       	call   0x406ad8
40db65:	c3                   	ret
40db66:	8b c0                	mov    %eax,%eax
40db68:	8b 50 18             	mov    0x18(%eax),%edx
40db6b:	52                   	push   %edx
40db6c:	8b 40 14             	mov    0x14(%eax),%eax
40db6f:	50                   	push   %eax
40db70:	e8 63 8f ff ff       	call   0x406ad8
40db75:	c3                   	ret
40db76:	8b c0                	mov    %eax,%eax
40db78:	53                   	push   %ebx
40db79:	56                   	push   %esi
40db7a:	57                   	push   %edi
40db7b:	55                   	push   %ebp
40db7c:	83 c4 f8             	add    $0xfffffff8,%esp
40db7f:	8b e8                	mov    %eax,%ebp
40db81:	b3 01                	mov    $0x1,%bl
40db83:	e8 00 8e ff ff       	call   0x406988
40db88:	8b f8                	mov    %eax,%edi
40db8a:	3b 7d 24             	cmp    0x24(%ebp),%edi
40db8d:	0f 84 84 00 00 00    	je     0x40dc17
40db93:	8b c5                	mov    %ebp,%eax
40db95:	e8 9a ff ff ff       	call   0x40db34
40db9a:	8b 45 28             	mov    0x28(%ebp),%eax
40db9d:	89 44 24 04          	mov    %eax,0x4(%esp)
40dba1:	8b d4                	mov    %esp,%edx
40dba3:	8b 45 20             	mov    0x20(%ebp),%eax
40dba6:	e8 01 fe ff ff       	call   0x40d9ac
40dbab:	8b 04 24             	mov    (%esp),%eax
40dbae:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40dbb2:	0f 97 c3             	seta   %bl
40dbb5:	84 db                	test   %bl,%bl
40dbb7:	74 24                	je     0x40dbdd
40dbb9:	8d 45 0c             	lea    0xc(%ebp),%eax
40dbbc:	e8 4f fd ff ff       	call   0x40d910
40dbc1:	eb 1a                	jmp    0x40dbdd
40dbc3:	8d 45 0c             	lea    0xc(%ebp),%eax
40dbc6:	ba ff ff 00 00       	mov    $0xffff,%edx
40dbcb:	e8 60 fd ff ff       	call   0x40d930
40dbd0:	8b f0                	mov    %eax,%esi
40dbd2:	85 f6                	test   %esi,%esi
40dbd4:	74 07                	je     0x40dbdd
40dbd6:	8b c5                	mov    %ebp,%eax
40dbd8:	e8 8b ff ff ff       	call   0x40db68
40dbdd:	8d 45 0c             	lea    0xc(%ebp),%eax
40dbe0:	ba 01 00 ff ff       	mov    $0xffff0001,%edx
40dbe5:	e8 46 fd ff ff       	call   0x40d930
40dbea:	3d ff ff 00 00       	cmp    $0xffff,%eax
40dbef:	75 d2                	jne    0x40dbc3
40dbf1:	8b c5                	mov    %ebp,%eax
40dbf3:	e8 3c ff ff ff       	call   0x40db34
40dbf8:	84 db                	test   %bl,%bl
40dbfa:	74 08                	je     0x40dc04
40dbfc:	8d 45 0c             	lea    0xc(%ebp),%eax
40dbff:	e8 18 fd ff ff       	call   0x40d91c
40dc04:	89 7d 24             	mov    %edi,0x24(%ebp)
40dc07:	8d 45 28             	lea    0x28(%ebp),%eax
40dc0a:	e8 01 fd ff ff       	call   0x40d910
40dc0f:	48                   	dec    %eax
40dc10:	3b 44 24 04          	cmp    0x4(%esp),%eax
40dc14:	0f 94 c3             	sete   %bl
40dc17:	ff 45 1c             	incl   0x1c(%ebp)
40dc1a:	8b c3                	mov    %ebx,%eax
40dc1c:	59                   	pop    %ecx
40dc1d:	5a                   	pop    %edx
40dc1e:	5d                   	pop    %ebp
40dc1f:	5f                   	pop    %edi
40dc20:	5e                   	pop    %esi
40dc21:	5b                   	pop    %ebx
40dc22:	c3                   	ret
40dc23:	90                   	nop
40dc24:	53                   	push   %ebx
40dc25:	51                   	push   %ecx
40dc26:	8b d8                	mov    %eax,%ebx
40dc28:	8b d4                	mov    %esp,%edx
40dc2a:	8b 43 20             	mov    0x20(%ebx),%eax
40dc2d:	e8 7a fd ff ff       	call   0x40d9ac
40dc32:	ff 4b 1c             	decl   0x1c(%ebx)
40dc35:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
40dc39:	75 20                	jne    0x40dc5b
40dc3b:	33 c0                	xor    %eax,%eax
40dc3d:	89 43 24             	mov    %eax,0x24(%ebx)
40dc40:	8d 43 0c             	lea    0xc(%ebx),%eax
40dc43:	ba ff ff 00 00       	mov    $0xffff,%edx
40dc48:	e8 e3 fc ff ff       	call   0x40d930
40dc4d:	8b c3                	mov    %ebx,%eax
40dc4f:	e8 f8 fe ff ff       	call   0x40db4c
40dc54:	8b c3                	mov    %ebx,%eax
40dc56:	e8 e5 fe ff ff       	call   0x40db40
40dc5b:	8b 04 24             	mov    (%esp),%eax
40dc5e:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40dc62:	75 0a                	jne    0x40dc6e
40dc64:	8b d4                	mov    %esp,%edx
40dc66:	8b 43 20             	mov    0x20(%ebx),%eax
40dc69:	e8 b6 fd ff ff       	call   0x40da24
40dc6e:	5a                   	pop    %edx
40dc6f:	5b                   	pop    %ebx
40dc70:	c3                   	ret
40dc71:	8d 40 00             	lea    0x0(%eax),%eax
40dc74:	53                   	push   %ebx
40dc75:	56                   	push   %esi
40dc76:	57                   	push   %edi
40dc77:	51                   	push   %ecx
40dc78:	8b f8                	mov    %eax,%edi
40dc7a:	8b d4                	mov    %esp,%edx
40dc7c:	8b 47 20             	mov    0x20(%edi),%eax
40dc7f:	e8 28 fd ff ff       	call   0x40d9ac
40dc84:	8b 04 24             	mov    (%esp),%eax
40dc87:	ff 40 0c             	incl   0xc(%eax)
40dc8a:	8b 04 24             	mov    (%esp),%eax
40dc8d:	83 78 0c 01          	cmpl   $0x1,0xc(%eax)
40dc91:	0f 97 c3             	seta   %bl
40dc94:	e8 ef 8c ff ff       	call   0x406988
40dc99:	3b 47 24             	cmp    0x24(%edi),%eax
40dc9c:	74 40                	je     0x40dcde
40dc9e:	84 db                	test   %bl,%bl
40dca0:	75 3c                	jne    0x40dcde
40dca2:	8b c7                	mov    %edi,%eax
40dca4:	e8 af fe ff ff       	call   0x40db58
40dca9:	eb 27                	jmp    0x40dcd2
40dcab:	8d 47 0c             	lea    0xc(%edi),%eax
40dcae:	e8 5d fc ff ff       	call   0x40d910
40dcb3:	8b f0                	mov    %eax,%esi
40dcb5:	81 fe ff ff 00 00    	cmp    $0xffff,%esi
40dcbb:	75 07                	jne    0x40dcc4
40dcbd:	8b c7                	mov    %edi,%eax
40dcbf:	e8 88 fe ff ff       	call   0x40db4c
40dcc4:	6a 00                	push   $0x0
40dcc6:	e8 e9 fa ff ff       	call   0x40d7b4
40dccb:	8b c7                	mov    %edi,%eax
40dccd:	e8 86 fe ff ff       	call   0x40db58
40dcd2:	8d 47 0c             	lea    0xc(%edi),%eax
40dcd5:	e8 42 fc ff ff       	call   0x40d91c
40dcda:	85 c0                	test   %eax,%eax
40dcdc:	7e cd                	jle    0x40dcab
40dcde:	5a                   	pop    %edx
40dcdf:	5f                   	pop    %edi
40dce0:	5e                   	pop    %esi
40dce1:	5b                   	pop    %ebx
40dce2:	c3                   	ret
40dce3:	90                   	nop
40dce4:	53                   	push   %ebx
40dce5:	51                   	push   %ecx
40dce6:	8b d8                	mov    %eax,%ebx
40dce8:	8b d4                	mov    %esp,%edx
40dcea:	8b 43 20             	mov    0x20(%ebx),%eax
40dced:	e8 ba fc ff ff       	call   0x40d9ac
40dcf2:	8b 04 24             	mov    (%esp),%eax
40dcf5:	ff 48 0c             	decl   0xc(%eax)
40dcf8:	8b 04 24             	mov    (%esp),%eax
40dcfb:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40dcff:	75 48                	jne    0x40dd49
40dd01:	8b d4                	mov    %esp,%edx
40dd03:	8b 43 20             	mov    0x20(%ebx),%eax
40dd06:	e8 19 fd ff ff       	call   0x40da24
40dd0b:	e8 78 8c ff ff       	call   0x406988
40dd10:	3b 43 24             	cmp    0x24(%ebx),%eax
40dd13:	74 34                	je     0x40dd49
40dd15:	8d 43 0c             	lea    0xc(%ebx),%eax
40dd18:	e8 f3 fb ff ff       	call   0x40d910
40dd1d:	8b c8                	mov    %eax,%ecx
40dd1f:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40dd25:	75 09                	jne    0x40dd30
40dd27:	8b c3                	mov    %ebx,%eax
40dd29:	e8 1e fe ff ff       	call   0x40db4c
40dd2e:	eb 19                	jmp    0x40dd49
40dd30:	85 c9                	test   %ecx,%ecx
40dd32:	7f 15                	jg     0x40dd49
40dd34:	8b c1                	mov    %ecx,%eax
40dd36:	b9 ff ff 00 00       	mov    $0xffff,%ecx
40dd3b:	99                   	cltd
40dd3c:	f7 f9                	idiv   %ecx
40dd3e:	85 d2                	test   %edx,%edx
40dd40:	75 07                	jne    0x40dd49
40dd42:	8b c3                	mov    %ebx,%eax
40dd44:	e8 03 fe ff ff       	call   0x40db4c
40dd49:	5a                   	pop    %edx
40dd4a:	5b                   	pop    %ebx
40dd4b:	c3                   	ret
40dd4c:	8b 10                	mov    (%eax),%edx
40dd4e:	33 c9                	xor    %ecx,%ecx
40dd50:	89 08                	mov    %ecx,(%eax)
40dd52:	8b c2                	mov    %edx,%eax
40dd54:	e8 9b 5b ff ff       	call   0x4038f4
40dd59:	c3                   	ret
40dd5a:	8b c0                	mov    %eax,%eax
40dd5c:	53                   	push   %ebx
40dd5d:	56                   	push   %esi
40dd5e:	57                   	push   %edi
40dd5f:	8b f9                	mov    %ecx,%edi
40dd61:	8b f2                	mov    %edx,%esi
40dd63:	8b d8                	mov    %eax,%ebx
40dd65:	85 db                	test   %ebx,%ebx
40dd67:	74 0b                	je     0x40dd74
40dd69:	57                   	push   %edi
40dd6a:	56                   	push   %esi
40dd6b:	53                   	push   %ebx
40dd6c:	8b 03                	mov    (%ebx),%eax
40dd6e:	ff 10                	call   *(%eax)
40dd70:	85 c0                	test   %eax,%eax
40dd72:	74 04                	je     0x40dd78
40dd74:	33 c0                	xor    %eax,%eax
40dd76:	eb 02                	jmp    0x40dd7a
40dd78:	b0 01                	mov    $0x1,%al
40dd7a:	5f                   	pop    %edi
40dd7b:	5e                   	pop    %esi
40dd7c:	5b                   	pop    %ebx
40dd7d:	c3                   	ret
40dd7e:	8b c0                	mov    %eax,%eax
40dd80:	55                   	push   %ebp
40dd81:	8b ec                	mov    %esp,%ebp
40dd83:	6a 00                	push   $0x0
40dd85:	53                   	push   %ebx