40dd68:	c3                   	ret
40dd69:	8d 40 00             	lea    0x0(%eax),%eax
40dd6c:	55                   	push   %ebp
40dd6d:	8b ec                	mov    %esp,%ebp
40dd6f:	51                   	push   %ecx
40dd70:	e8 8b 8c ff ff       	call   0x406a00
40dd75:	66 89 45 fe          	mov    %ax,-0x2(%ebp)
40dd79:	0f b6 45 fe          	movzbl -0x2(%ebp),%eax
40dd7d:	32 45 ff             	xor    -0x1(%ebp),%al
40dd80:	24 0f                	and    $0xf,%al
40dd82:	59                   	pop    %ecx
40dd83:	5d                   	pop    %ebp
40dd84:	c3                   	ret
40dd85:	8d 40 00             	lea    0x0(%eax),%eax
40dd88:	53                   	push   %ebx
40dd89:	56                   	push   %esi
40dd8a:	57                   	push   %edi
40dd8b:	55                   	push   %ebp
40dd8c:	51                   	push   %ecx
40dd8d:	89 14 24             	mov    %edx,(%esp)
40dd90:	8b f8                	mov    %eax,%edi
40dd92:	8b c7                	mov    %edi,%eax
40dd94:	e8 d3 ff ff ff       	call   0x40dd6c
40dd99:	8b d8                	mov    %eax,%ebx
40dd9b:	e8 60 8c ff ff       	call   0x406a00
40dda0:	8b f0                	mov    %eax,%esi
40dda2:	0f b6 c3             	movzbl %bl,%eax
40dda5:	8b 6c 87 04          	mov    0x4(%edi,%eax,4),%ebp
40dda9:	eb 03                	jmp    0x40ddae
40ddab:	8b 6d 00             	mov    0x0(%ebp),%ebp
40ddae:	85 ed                	test   %ebp,%ebp
40ddb0:	74 05                	je     0x40ddb7
40ddb2:	3b 75 04             	cmp    0x4(%ebp),%esi
40ddb5:	75 f4                	jne    0x40ddab
40ddb7:	85 ed                	test   %ebp,%ebp
40ddb9:	75 37                	jne    0x40ddf2
40ddbb:	8b c7                	mov    %edi,%eax
40ddbd:	e8 4e 00 00 00       	call   0x40de10
40ddc2:	8b e8                	mov    %eax,%ebp
40ddc4:	85 ed                	test   %ebp,%ebp
40ddc6:	75 2a                	jne    0x40ddf2
40ddc8:	b8 10 00 00 00       	mov    $0x10,%eax
40ddcd:	e8 12 4f ff ff       	call   0x402ce4
40ddd2:	8b e8                	mov    %eax,%ebp
40ddd4:	89 75 04             	mov    %esi,0x4(%ebp)
40ddd7:	c7 45 08 ff ff ff 7f 	movl   $0x7fffffff,0x8(%ebp)
40ddde:	89 6d 00             	mov    %ebp,0x0(%ebp)
40dde1:	0f b6 c3             	movzbl %bl,%eax
40dde4:	8d 44 87 04          	lea    0x4(%edi,%eax,4),%eax
40dde8:	8b d5                	mov    %ebp,%edx
40ddea:	e8 15 ff ff ff       	call   0x40dd04
40ddef:	89 45 00             	mov    %eax,0x0(%ebp)
40ddf2:	8b 04 24             	mov    (%esp),%eax
40ddf5:	89 28                	mov    %ebp,(%eax)
40ddf7:	5a                   	pop    %edx
40ddf8:	5d                   	pop    %ebp
40ddf9:	5f                   	pop    %edi
40ddfa:	5e                   	pop    %esi
40ddfb:	5b                   	pop    %ebx
40ddfc:	c3                   	ret
40ddfd:	8d 40 00             	lea    0x0(%eax),%eax
40de00:	8b 02                	mov    (%edx),%eax
40de02:	33 c9                	xor    %ecx,%ecx
40de04:	89 48 04             	mov    %ecx,0x4(%eax)
40de07:	8b 02                	mov    (%edx),%eax
40de09:	33 d2                	xor    %edx,%edx
40de0b:	89 50 08             	mov    %edx,0x8(%eax)
40de0e:	c3                   	ret
40de0f:	90                   	nop
40de10:	53                   	push   %ebx
40de11:	56                   	push   %esi
40de12:	8b d8                	mov    %eax,%ebx
40de14:	8b c3                	mov    %ebx,%eax
40de16:	e8 51 ff ff ff       	call   0x40dd6c
40de1b:	0f b6 c0             	movzbl %al,%eax
40de1e:	8b 5c 83 04          	mov    0x4(%ebx,%eax,4),%ebx
40de22:	85 db                	test   %ebx,%ebx
40de24:	74 27                	je     0x40de4d
40de26:	8d 43 08             	lea    0x8(%ebx),%eax
40de29:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40de2e:	e8 d1 fe ff ff       	call   0x40dd04
40de33:	8b f0                	mov    %eax,%esi
40de35:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40de3b:	74 0a                	je     0x40de47
40de3d:	e8 be 8b ff ff       	call   0x406a00
40de42:	89 43 04             	mov    %eax,0x4(%ebx)
40de45:	eb 06                	jmp    0x40de4d
40de47:	8b 1b                	mov    (%ebx),%ebx
40de49:	85 db                	test   %ebx,%ebx
40de4b:	75 d9                	jne    0x40de26
40de4d:	8b c3                	mov    %ebx,%eax
40de4f:	5e                   	pop    %esi
40de50:	5b                   	pop    %ebx
40de51:	c3                   	ret
40de52:	8b c0                	mov    %eax,%eax
40de54:	53                   	push   %ebx
40de55:	56                   	push   %esi
40de56:	84 d2                	test   %dl,%dl
40de58:	74 08                	je     0x40de62
40de5a:	83 c4 f0             	add    $0xfffffff0,%esp
40de5d:	e8 de 5d ff ff       	call   0x403c40
40de62:	8b da                	mov    %edx,%ebx
40de64:	8b f0                	mov    %eax,%esi
40de66:	33 d2                	xor    %edx,%edx
40de68:	8b c6                	mov    %esi,%eax
40de6a:	e8 7d 5a ff ff       	call   0x4038ec
40de6f:	c7 46 0c ff ff 00 00 	movl   $0xffff,0xc(%esi)
40de76:	6a 00                	push   $0x0
40de78:	6a ff                	push   $0xffffffff
40de7a:	6a ff                	push   $0xffffffff
40de7c:	6a 00                	push   $0x0
40de7e:	e8 0d 8b ff ff       	call   0x406990
40de83:	89 46 10             	mov    %eax,0x10(%esi)
40de86:	6a 00                	push   $0x0
40de88:	6a 00                	push   $0x0
40de8a:	6a 00                	push   $0x0
40de8c:	6a 00                	push   $0x0
40de8e:	e8 fd 8a ff ff       	call   0x406990
40de93:	89 46 14             	mov    %eax,0x14(%esi)
40de96:	c7 46 18 ff ff ff ff 	movl   $0xffffffff,0x18(%esi)
40de9d:	b2 01                	mov    $0x1,%dl
40de9f:	a1 d8 85 40 00       	mov    0x4085d8,%eax
40dea4:	e8 43 5a ff ff       	call   0x4038ec
40dea9:	89 46 20             	mov    %eax,0x20(%esi)
40deac:	8b c6                	mov    %esi,%eax
40deae:	84 db                	test   %bl,%bl
40deb0:	74 0f                	je     0x40dec1
40deb2:	e8 e1 5d ff ff       	call   0x403c98
40deb7:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40debe:	83 c4 0c             	add    $0xc,%esp
40dec1:	8b c6                	mov    %esi,%eax
40dec3:	5e                   	pop    %esi
40dec4:	5b                   	pop    %ebx
40dec5:	c3                   	ret
40dec6:	8b c0                	mov    %eax,%eax
40dec8:	53                   	push   %ebx
40dec9:	56                   	push   %esi
40deca:	e8 19 5e ff ff       	call   0x403ce8
40decf:	8b da                	mov    %edx,%ebx
40ded1:	8b f0                	mov    %eax,%esi
40ded3:	8b c6                	mov    %esi,%eax
40ded5:	e8 7a 00 00 00       	call   0x40df54
40deda:	8b d3                	mov    %ebx,%edx
40dedc:	80 e2 fc             	and    $0xfc,%dl
40dedf:	8b c6                	mov    %esi,%eax
40dee1:	e8 26 5a ff ff       	call   0x40390c
40dee6:	8b 46 10             	mov    0x10(%esi),%eax
40dee9:	50                   	push   %eax
40deea:	e8 91 8a ff ff       	call   0x406980
40deef:	8b 46 14             	mov    0x14(%esi),%eax
40def2:	50                   	push   %eax
40def3:	e8 88 8a ff ff       	call   0x406980
40def8:	8b 46 20             	mov    0x20(%esi),%eax
40defb:	e8 1c 5a ff ff       	call   0x40391c
40df00:	84 db                	test   %bl,%bl
40df02:	7e 07                	jle    0x40df0b
40df04:	8b c6                	mov    %esi,%eax
40df06:	e8 85 5d ff ff       	call   0x403c90
40df0b:	5e                   	pop    %esi
40df0c:	5b                   	pop    %ebx
40df0d:	c3                   	ret
40df0e:	8b c0                	mov    %eax,%eax
40df10:	8b 40 10             	mov    0x10(%eax),%eax
40df13:	50                   	push   %eax
40df14:	e8 e7 8b ff ff       	call   0x406b00
40df19:	c3                   	ret
40df1a:	8b c0                	mov    %eax,%eax
40df1c:	8b 40 10             	mov    0x10(%eax),%eax
40df1f:	50                   	push   %eax
40df20:	e8 f3 8b ff ff       	call   0x406b18
40df25:	c3                   	ret
40df26:	8b c0                	mov    %eax,%eax
40df28:	8b 40 14             	mov    0x14(%eax),%eax
40df2b:	50                   	push   %eax
40df2c:	e8 e7 8b ff ff       	call   0x406b18
40df31:	c3                   	ret
40df32:	8b c0                	mov    %eax,%eax
40df34:	8b 50 18             	mov    0x18(%eax),%edx
40df37:	52                   	push   %edx
40df38:	8b 40 10             	mov    0x10(%eax),%eax
40df3b:	50                   	push   %eax
40df3c:	e8 0f 8c ff ff       	call   0x406b50
40df41:	c3                   	ret
40df42:	8b c0                	mov    %eax,%eax
40df44:	8b 50 18             	mov    0x18(%eax),%edx
40df47:	52                   	push   %edx
40df48:	8b 40 14             	mov    0x14(%eax),%eax
40df4b:	50                   	push   %eax
40df4c:	e8 ff 8b ff ff       	call   0x406b50
40df51:	c3                   	ret
40df52:	8b c0                	mov    %eax,%eax
40df54:	53                   	push   %ebx
40df55:	56                   	push   %esi
40df56:	57                   	push   %edi
40df57:	55                   	push   %ebp
40df58:	83 c4 f8             	add    $0xfffffff8,%esp
40df5b:	8b e8                	mov    %eax,%ebp
40df5d:	b3 01                	mov    $0x1,%bl
40df5f:	e8 9c 8a ff ff       	call   0x406a00
40df64:	8b f8                	mov    %eax,%edi
40df66:	3b 7d 24             	cmp    0x24(%ebp),%edi
40df69:	0f 84 84 00 00 00    	je     0x40dff3
40df6f:	8b c5                	mov    %ebp,%eax
40df71:	e8 9a ff ff ff       	call   0x40df10
40df76:	8b 45 28             	mov    0x28(%ebp),%eax
40df79:	89 44 24 04          	mov    %eax,0x4(%esp)
40df7d:	8b d4                	mov    %esp,%edx
40df7f:	8b 45 20             	mov    0x20(%ebp),%eax
40df82:	e8 01 fe ff ff       	call   0x40dd88
40df87:	8b 04 24             	mov    (%esp),%eax
40df8a:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40df8e:	0f 97 c3             	seta   %bl
40df91:	84 db                	test   %bl,%bl
40df93:	74 24                	je     0x40dfb9
40df95:	8d 45 0c             	lea    0xc(%ebp),%eax
40df98:	e8 4f fd ff ff       	call   0x40dcec
40df9d:	eb 1a                	jmp    0x40dfb9
40df9f:	8d 45 0c             	lea    0xc(%ebp),%eax
40dfa2:	ba ff ff 00 00       	mov    $0xffff,%edx
40dfa7:	e8 60 fd ff ff       	call   0x40dd0c
40dfac:	8b f0                	mov    %eax,%esi
40dfae:	85 f6                	test   %esi,%esi
40dfb0:	74 07                	je     0x40dfb9
40dfb2:	8b c5                	mov    %ebp,%eax
40dfb4:	e8 8b ff ff ff       	call   0x40df44
40dfb9:	8d 45 0c             	lea    0xc(%ebp),%eax
40dfbc:	ba 01 00 ff ff       	mov    $0xffff0001,%edx
40dfc1:	e8 46 fd ff ff       	call   0x40dd0c
40dfc6:	3d ff ff 00 00       	cmp    $0xffff,%eax
40dfcb:	75 d2                	jne    0x40df9f
40dfcd:	8b c5                	mov    %ebp,%eax
40dfcf:	e8 3c ff ff ff       	call   0x40df10
40dfd4:	84 db                	test   %bl,%bl
40dfd6:	74 08                	je     0x40dfe0
40dfd8:	8d 45 0c             	lea    0xc(%ebp),%eax
40dfdb:	e8 18 fd ff ff       	call   0x40dcf8
40dfe0:	89 7d 24             	mov    %edi,0x24(%ebp)
40dfe3:	8d 45 28             	lea    0x28(%ebp),%eax
40dfe6:	e8 01 fd ff ff       	call   0x40dcec
40dfeb:	48                   	dec    %eax
40dfec:	3b 44 24 04          	cmp    0x4(%esp),%eax
40dff0:	0f 94 c3             	sete   %bl
40dff3:	ff 45 1c             	incl   0x1c(%ebp)
40dff6:	8b c3                	mov    %ebx,%eax
40dff8:	59                   	pop    %ecx
40dff9:	5a                   	pop    %edx
40dffa:	5d                   	pop    %ebp
40dffb:	5f                   	pop    %edi
40dffc:	5e                   	pop    %esi
40dffd:	5b                   	pop    %ebx
40dffe:	c3                   	ret
40dfff:	90                   	nop
40e000:	53                   	push   %ebx
40e001:	51                   	push   %ecx
40e002:	8b d8                	mov    %eax,%ebx
40e004:	8b d4                	mov    %esp,%edx
40e006:	8b 43 20             	mov    0x20(%ebx),%eax
40e009:	e8 7a fd ff ff       	call   0x40dd88
40e00e:	ff 4b 1c             	decl   0x1c(%ebx)
40e011:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
40e015:	75 20                	jne    0x40e037
40e017:	33 c0                	xor    %eax,%eax
40e019:	89 43 24             	mov    %eax,0x24(%ebx)
40e01c:	8d 43 0c             	lea    0xc(%ebx),%eax
40e01f:	ba ff ff 00 00       	mov    $0xffff,%edx
40e024:	e8 e3 fc ff ff       	call   0x40dd0c
40e029:	8b c3                	mov    %ebx,%eax
40e02b:	e8 f8 fe ff ff       	call   0x40df28
40e030:	8b c3                	mov    %ebx,%eax
40e032:	e8 e5 fe ff ff       	call   0x40df1c
40e037:	8b 04 24             	mov    (%esp),%eax
40e03a:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40e03e:	75 0a                	jne    0x40e04a
40e040:	8b d4                	mov    %esp,%edx
40e042:	8b 43 20             	mov    0x20(%ebx),%eax
40e045:	e8 b6 fd ff ff       	call   0x40de00
40e04a:	5a                   	pop    %edx
40e04b:	5b                   	pop    %ebx
40e04c:	c3                   	ret
40e04d:	8d 40 00             	lea    0x0(%eax),%eax
40e050:	53                   	push   %ebx
40e051:	56                   	push   %esi
40e052:	57                   	push   %edi
40e053:	51                   	push   %ecx
40e054:	8b f8                	mov    %eax,%edi
40e056:	8b d4                	mov    %esp,%edx
40e058:	8b 47 20             	mov    0x20(%edi),%eax
40e05b:	e8 28 fd ff ff       	call   0x40dd88
40e060:	8b 04 24             	mov    (%esp),%eax
40e063:	ff 40 0c             	incl   0xc(%eax)
40e066:	8b 04 24             	mov    (%esp),%eax
40e069:	83 78 0c 01          	cmpl   $0x1,0xc(%eax)
40e06d:	0f 97 c3             	seta   %bl
40e070:	e8 8b 89 ff ff       	call   0x406a00
40e075:	3b 47 24             	cmp    0x24(%edi),%eax
40e078:	74 40                	je     0x40e0ba
40e07a:	84 db                	test   %bl,%bl
40e07c:	75 3c                	jne    0x40e0ba
40e07e:	8b c7                	mov    %edi,%eax
40e080:	e8 af fe ff ff       	call   0x40df34
40e085:	eb 27                	jmp    0x40e0ae
40e087:	8d 47 0c             	lea    0xc(%edi),%eax
40e08a:	e8 5d fc ff ff       	call   0x40dcec
40e08f:	8b f0                	mov    %eax,%esi
40e091:	81 fe ff ff 00 00    	cmp    $0xffff,%esi
40e097:	75 07                	jne    0x40e0a0
40e099:	8b c7                	mov    %edi,%eax
40e09b:	e8 88 fe ff ff       	call   0x40df28
40e0a0:	6a 00                	push   $0x0
40e0a2:	e8 e9 fa ff ff       	call   0x40db90
40e0a7:	8b c7                	mov    %edi,%eax
40e0a9:	e8 86 fe ff ff       	call   0x40df34
40e0ae:	8d 47 0c             	lea    0xc(%edi),%eax
40e0b1:	e8 42 fc ff ff       	call   0x40dcf8
40e0b6:	85 c0                	test   %eax,%eax
40e0b8:	7e cd                	jle    0x40e087
40e0ba:	5a                   	pop    %edx
40e0bb:	5f                   	pop    %edi
40e0bc:	5e                   	pop    %esi
40e0bd:	5b                   	pop    %ebx
40e0be:	c3                   	ret
40e0bf:	90                   	nop
40e0c0:	53                   	push   %ebx
40e0c1:	51                   	push   %ecx
40e0c2:	8b d8                	mov    %eax,%ebx
40e0c4:	8b d4                	mov    %esp,%edx
40e0c6:	8b 43 20             	mov    0x20(%ebx),%eax
40e0c9:	e8 ba fc ff ff       	call   0x40dd88
40e0ce:	8b 04 24             	mov    (%esp),%eax
40e0d1:	ff 48 0c             	decl   0xc(%eax)
40e0d4:	8b 04 24             	mov    (%esp),%eax
40e0d7:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40e0db:	75 48                	jne    0x40e125
40e0dd:	8b d4                	mov    %esp,%edx
40e0df:	8b 43 20             	mov    0x20(%ebx),%eax
40e0e2:	e8 19 fd ff ff       	call   0x40de00
40e0e7:	e8 14 89 ff ff       	call   0x406a00
40e0ec:	3b 43 24             	cmp    0x24(%ebx),%eax
40e0ef:	74 34                	je     0x40e125
40e0f1:	8d 43 0c             	lea    0xc(%ebx),%eax
40e0f4:	e8 f3 fb ff ff       	call   0x40dcec
40e0f9:	8b c8                	mov    %eax,%ecx
40e0fb:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40e101:	75 09                	jne    0x40e10c
40e103:	8b c3                	mov    %ebx,%eax
40e105:	e8 1e fe ff ff       	call   0x40df28
40e10a:	eb 19                	jmp    0x40e125
40e10c:	85 c9                	test   %ecx,%ecx
40e10e:	7f 15                	jg     0x40e125
40e110:	8b c1                	mov    %ecx,%eax