40cdad:	66 89 45 fe          	mov    %ax,-0x2(%ebp)
40cdb1:	8a 45 fe             	mov    -0x2(%ebp),%al
40cdb4:	32 45 ff             	xor    -0x1(%ebp),%al
40cdb7:	24 0f                	and    $0xf,%al
40cdb9:	59                   	pop    %ecx
40cdba:	5d                   	pop    %ebp
40cdbb:	c3                   	ret
40cdbc:	53                   	push   %ebx
40cdbd:	56                   	push   %esi
40cdbe:	57                   	push   %edi
40cdbf:	55                   	push   %ebp
40cdc0:	51                   	push   %ecx
40cdc1:	89 14 24             	mov    %edx,(%esp)
40cdc4:	8b f8                	mov    %eax,%edi
40cdc6:	8b c7                	mov    %edi,%eax
40cdc8:	e8 d7 ff ff ff       	call   0x40cda4
40cdcd:	8b d8                	mov    %eax,%ebx
40cdcf:	e8 84 92 ff ff       	call   0x406058
40cdd4:	8b f0                	mov    %eax,%esi
40cdd6:	33 c0                	xor    %eax,%eax
40cdd8:	8a c3                	mov    %bl,%al
40cdda:	8b 6c 87 04          	mov    0x4(%edi,%eax,4),%ebp
40cdde:	eb 03                	jmp    0x40cde3
40cde0:	8b 6d 00             	mov    0x0(%ebp),%ebp
40cde3:	85 ed                	test   %ebp,%ebp
40cde5:	74 05                	je     0x40cdec
40cde7:	3b 75 04             	cmp    0x4(%ebp),%esi
40cdea:	75 f4                	jne    0x40cde0
40cdec:	85 ed                	test   %ebp,%ebp
40cdee:	75 38                	jne    0x40ce28
40cdf0:	8b c7                	mov    %edi,%eax
40cdf2:	e8 4d 00 00 00       	call   0x40ce44
40cdf7:	8b e8                	mov    %eax,%ebp
40cdf9:	85 ed                	test   %ebp,%ebp
40cdfb:	75 2b                	jne    0x40ce28
40cdfd:	b8 10 00 00 00       	mov    $0x10,%eax
40ce02:	e8 f5 ac ff ff       	call   0x407afc
40ce07:	8b e8                	mov    %eax,%ebp
40ce09:	89 75 04             	mov    %esi,0x4(%ebp)
40ce0c:	c7 45 08 ff ff ff 7f 	movl   $0x7fffffff,0x8(%ebp)
40ce13:	89 6d 00             	mov    %ebp,0x0(%ebp)
40ce16:	33 c0                	xor    %eax,%eax
40ce18:	8a c3                	mov    %bl,%al
40ce1a:	8d 44 87 04          	lea    0x4(%edi,%eax,4),%eax
40ce1e:	8b d5                	mov    %ebp,%edx
40ce20:	e8 1f ff ff ff       	call   0x40cd44
40ce25:	89 45 00             	mov    %eax,0x0(%ebp)
40ce28:	8b 04 24             	mov    (%esp),%eax
40ce2b:	89 28                	mov    %ebp,(%eax)
40ce2d:	5a                   	pop    %edx
40ce2e:	5d                   	pop    %ebp
40ce2f:	5f                   	pop    %edi
40ce30:	5e                   	pop    %esi
40ce31:	5b                   	pop    %ebx
40ce32:	c3                   	ret
40ce33:	90                   	nop
40ce34:	8b 02                	mov    (%edx),%eax
40ce36:	33 c9                	xor    %ecx,%ecx
40ce38:	89 48 04             	mov    %ecx,0x4(%eax)
40ce3b:	8b 02                	mov    (%edx),%eax
40ce3d:	33 d2                	xor    %edx,%edx
40ce3f:	89 50 08             	mov    %edx,0x8(%eax)
40ce42:	c3                   	ret
40ce43:	90                   	nop
40ce44:	53                   	push   %ebx
40ce45:	8b d8                	mov    %eax,%ebx
40ce47:	8b c3                	mov    %ebx,%eax
40ce49:	e8 56 ff ff ff       	call   0x40cda4
40ce4e:	25 ff 00 00 00       	and    $0xff,%eax
40ce53:	8b 5c 83 04          	mov    0x4(%ebx,%eax,4),%ebx
40ce57:	85 db                	test   %ebx,%ebx
40ce59:	74 24                	je     0x40ce7f
40ce5b:	8d 43 08             	lea    0x8(%ebx),%eax
40ce5e:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40ce63:	e8 dc fe ff ff       	call   0x40cd44
40ce68:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40ce6d:	74 0a                	je     0x40ce79
40ce6f:	e8 e4 91 ff ff       	call   0x406058
40ce74:	89 43 04             	mov    %eax,0x4(%ebx)
40ce77:	eb 06                	jmp    0x40ce7f
40ce79:	8b 1b                	mov    (%ebx),%ebx
40ce7b:	85 db                	test   %ebx,%ebx
40ce7d:	75 dc                	jne    0x40ce5b
40ce7f:	8b c3                	mov    %ebx,%eax
40ce81:	5b                   	pop    %ebx
40ce82:	c3                   	ret
40ce83:	90                   	nop
40ce84:	53                   	push   %ebx
40ce85:	56                   	push   %esi
40ce86:	84 d2                	test   %dl,%dl
40ce88:	74 08                	je     0x40ce92
40ce8a:	83 c4 f0             	add    $0xfffffff0,%esp
40ce8d:	e8 fe 66 ff ff       	call   0x403590
40ce92:	8b da                	mov    %edx,%ebx
40ce94:	8b f0                	mov    %eax,%esi
40ce96:	33 d2                	xor    %edx,%edx
40ce98:	8b c6                	mov    %esi,%eax
40ce9a:	e8 9d 63 ff ff       	call   0x40323c
40ce9f:	c7 46 0c ff ff 00 00 	movl   $0xffff,0xc(%esi)
40cea6:	6a 00                	push   $0x0
40cea8:	6a ff                	push   $0xffffffff
40ceaa:	6a ff                	push   $0xffffffff
40ceac:	6a 00                	push   $0x0
40ceae:	e8 0d 91 ff ff       	call   0x405fc0
40ceb3:	89 46 10             	mov    %eax,0x10(%esi)
40ceb6:	6a 00                	push   $0x0
40ceb8:	6a 00                	push   $0x0
40ceba:	6a 00                	push   $0x0
40cebc:	6a 00                	push   $0x0
40cebe:	e8 fd 90 ff ff       	call   0x405fc0
40cec3:	89 46 14             	mov    %eax,0x14(%esi)
40cec6:	c7 46 18 ff ff ff ff 	movl   $0xffffffff,0x18(%esi)
40cecd:	b2 01                	mov    $0x1,%dl
40cecf:	a1 54 79 40 00       	mov    0x407954,%eax
40ced4:	e8 63 63 ff ff       	call   0x40323c
40ced9:	89 46 20             	mov    %eax,0x20(%esi)
40cedc:	8b c6                	mov    %esi,%eax
40cede:	84 db                	test   %bl,%bl
40cee0:	74 0f                	je     0x40cef1
40cee2:	e8 01 67 ff ff       	call   0x4035e8
40cee7:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40ceee:	83 c4 0c             	add    $0xc,%esp
40cef1:	8b c6                	mov    %esi,%eax
40cef3:	5e                   	pop    %esi
40cef4:	5b                   	pop    %ebx
40cef5:	c3                   	ret
40cef6:	8b c0                	mov    %eax,%eax
40cef8:	53                   	push   %ebx
40cef9:	56                   	push   %esi
40cefa:	e8 f9 66 ff ff       	call   0x4035f8
40ceff:	8b da                	mov    %edx,%ebx
40cf01:	8b f0                	mov    %eax,%esi
40cf03:	8b c6                	mov    %esi,%eax
40cf05:	e8 7a 00 00 00       	call   0x40cf84
40cf0a:	8b d3                	mov    %ebx,%edx
40cf0c:	80 e2 fc             	and    $0xfc,%dl
40cf0f:	8b c6                	mov    %esi,%eax
40cf11:	e8 46 63 ff ff       	call   0x40325c
40cf16:	8b 46 10             	mov    0x10(%esi),%eax
40cf19:	50                   	push   %eax
40cf1a:	e8 91 90 ff ff       	call   0x405fb0
40cf1f:	8b 46 14             	mov    0x14(%esi),%eax
40cf22:	50                   	push   %eax
40cf23:	e8 88 90 ff ff       	call   0x405fb0
40cf28:	8b 46 20             	mov    0x20(%esi),%eax
40cf2b:	e8 3c 63 ff ff       	call   0x40326c
40cf30:	84 db                	test   %bl,%bl
40cf32:	7e 07                	jle    0x40cf3b
40cf34:	8b c6                	mov    %esi,%eax
40cf36:	e8 a5 66 ff ff       	call   0x4035e0
40cf3b:	5e                   	pop    %esi
40cf3c:	5b                   	pop    %ebx
40cf3d:	c3                   	ret
40cf3e:	8b c0                	mov    %eax,%eax
40cf40:	8b 40 10             	mov    0x10(%eax),%eax
40cf43:	50                   	push   %eax
40cf44:	e8 2f 92 ff ff       	call   0x406178
40cf49:	c3                   	ret
40cf4a:	8b c0                	mov    %eax,%eax
40cf4c:	8b 40 10             	mov    0x10(%eax),%eax
40cf4f:	50                   	push   %eax
40cf50:	e8 3b 92 ff ff       	call   0x406190
40cf55:	c3                   	ret
40cf56:	8b c0                	mov    %eax,%eax
40cf58:	8b 40 14             	mov    0x14(%eax),%eax
40cf5b:	50                   	push   %eax
40cf5c:	e8 2f 92 ff ff       	call   0x406190
40cf61:	c3                   	ret
40cf62:	8b c0                	mov    %eax,%eax
40cf64:	8b 50 18             	mov    0x18(%eax),%edx
40cf67:	52                   	push   %edx
40cf68:	8b 40 10             	mov    0x10(%eax),%eax
40cf6b:	50                   	push   %eax
40cf6c:	e8 57 92 ff ff       	call   0x4061c8
40cf71:	c3                   	ret
40cf72:	8b c0                	mov    %eax,%eax
40cf74:	8b 50 18             	mov    0x18(%eax),%edx
40cf77:	52                   	push   %edx
40cf78:	8b 40 14             	mov    0x14(%eax),%eax
40cf7b:	50                   	push   %eax
40cf7c:	e8 47 92 ff ff       	call   0x4061c8
40cf81:	c3                   	ret
40cf82:	8b c0                	mov    %eax,%eax
40cf84:	53                   	push   %ebx
40cf85:	56                   	push   %esi
40cf86:	57                   	push   %edi
40cf87:	55                   	push   %ebp
40cf88:	51                   	push   %ecx
40cf89:	8b f8                	mov    %eax,%edi
40cf8b:	b3 01                	mov    $0x1,%bl
40cf8d:	e8 c6 90 ff ff       	call   0x406058
40cf92:	8b f0                	mov    %eax,%esi
40cf94:	3b 77 24             	cmp    0x24(%edi),%esi
40cf97:	74 7c                	je     0x40d015
40cf99:	8b c7                	mov    %edi,%eax
40cf9b:	e8 a0 ff ff ff       	call   0x40cf40
40cfa0:	8b 6f 28             	mov    0x28(%edi),%ebp
40cfa3:	8b d4                	mov    %esp,%edx
40cfa5:	8b 47 20             	mov    0x20(%edi),%eax
40cfa8:	e8 0f fe ff ff       	call   0x40cdbc
40cfad:	8b 04 24             	mov    (%esp),%eax
40cfb0:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40cfb4:	0f 97 c3             	seta   %bl
40cfb7:	84 db                	test   %bl,%bl
40cfb9:	74 22                	je     0x40cfdd
40cfbb:	8d 47 0c             	lea    0xc(%edi),%eax
40cfbe:	e8 69 fd ff ff       	call   0x40cd2c
40cfc3:	eb 18                	jmp    0x40cfdd
40cfc5:	8d 47 0c             	lea    0xc(%edi),%eax
40cfc8:	ba ff ff 00 00       	mov    $0xffff,%edx
40cfcd:	e8 7a fd ff ff       	call   0x40cd4c
40cfd2:	85 c0                	test   %eax,%eax
40cfd4:	74 07                	je     0x40cfdd
40cfd6:	8b c7                	mov    %edi,%eax
40cfd8:	e8 97 ff ff ff       	call   0x40cf74
40cfdd:	8d 47 0c             	lea    0xc(%edi),%eax
40cfe0:	ba 01 00 ff ff       	mov    $0xffff0001,%edx
40cfe5:	e8 62 fd ff ff       	call   0x40cd4c
40cfea:	3d ff ff 00 00       	cmp    $0xffff,%eax
40cfef:	75 d4                	jne    0x40cfc5
40cff1:	8b c7                	mov    %edi,%eax
40cff3:	e8 48 ff ff ff       	call   0x40cf40
40cff8:	84 db                	test   %bl,%bl
40cffa:	74 08                	je     0x40d004
40cffc:	8d 47 0c             	lea    0xc(%edi),%eax
40cfff:	e8 34 fd ff ff       	call   0x40cd38
40d004:	89 77 24             	mov    %esi,0x24(%edi)
40d007:	8d 47 28             	lea    0x28(%edi),%eax
40d00a:	e8 1d fd ff ff       	call   0x40cd2c
40d00f:	48                   	dec    %eax
40d010:	3b c5                	cmp    %ebp,%eax
40d012:	0f 94 c3             	sete   %bl
40d015:	ff 47 1c             	incl   0x1c(%edi)
40d018:	8b c3                	mov    %ebx,%eax
40d01a:	5a                   	pop    %edx
40d01b:	5d                   	pop    %ebp
40d01c:	5f                   	pop    %edi
40d01d:	5e                   	pop    %esi
40d01e:	5b                   	pop    %ebx
40d01f:	c3                   	ret
40d020:	53                   	push   %ebx
40d021:	51                   	push   %ecx
40d022:	8b d8                	mov    %eax,%ebx
40d024:	8b d4                	mov    %esp,%edx
40d026:	8b 43 20             	mov    0x20(%ebx),%eax
40d029:	e8 8e fd ff ff       	call   0x40cdbc
40d02e:	ff 4b 1c             	decl   0x1c(%ebx)
40d031:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
40d035:	75 20                	jne    0x40d057
40d037:	33 c0                	xor    %eax,%eax
40d039:	89 43 24             	mov    %eax,0x24(%ebx)
40d03c:	8d 43 0c             	lea    0xc(%ebx),%eax
40d03f:	ba ff ff 00 00       	mov    $0xffff,%edx
40d044:	e8 03 fd ff ff       	call   0x40cd4c
40d049:	8b c3                	mov    %ebx,%eax
40d04b:	e8 08 ff ff ff       	call   0x40cf58
40d050:	8b c3                	mov    %ebx,%eax
40d052:	e8 f5 fe ff ff       	call   0x40cf4c
40d057:	8b 04 24             	mov    (%esp),%eax
40d05a:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40d05e:	75 0a                	jne    0x40d06a
40d060:	8b d4                	mov    %esp,%edx
40d062:	8b 43 20             	mov    0x20(%ebx),%eax
40d065:	e8 ca fd ff ff       	call   0x40ce34
40d06a:	5a                   	pop    %edx
40d06b:	5b                   	pop    %ebx
40d06c:	c3                   	ret
40d06d:	8d 40 00             	lea    0x0(%eax),%eax
40d070:	53                   	push   %ebx
40d071:	56                   	push   %esi
40d072:	51                   	push   %ecx
40d073:	8b f0                	mov    %eax,%esi
40d075:	8b d4                	mov    %esp,%edx
40d077:	8b 46 20             	mov    0x20(%esi),%eax
40d07a:	e8 3d fd ff ff       	call   0x40cdbc
40d07f:	8b 04 24             	mov    (%esp),%eax
40d082:	ff 40 0c             	incl   0xc(%eax)
40d085:	8b 04 24             	mov    (%esp),%eax
40d088:	83 78 0c 01          	cmpl   $0x1,0xc(%eax)
40d08c:	0f 97 c3             	seta   %bl
40d08f:	e8 c4 8f ff ff       	call   0x406058
40d094:	3b 46 24             	cmp    0x24(%esi),%eax
40d097:	74 3d                	je     0x40d0d6
40d099:	84 db                	test   %bl,%bl
40d09b:	75 39                	jne    0x40d0d6
40d09d:	8b c6                	mov    %esi,%eax
40d09f:	e8 c0 fe ff ff       	call   0x40cf64
40d0a4:	eb 24                	jmp    0x40d0ca
40d0a6:	8d 46 0c             	lea    0xc(%esi),%eax
40d0a9:	e8 7e fc ff ff       	call   0x40cd2c
40d0ae:	3d ff ff 00 00       	cmp    $0xffff,%eax
40d0b3:	75 07                	jne    0x40d0bc
40d0b5:	8b c6                	mov    %esi,%eax
40d0b7:	e8 9c fe ff ff       	call   0x40cf58
40d0bc:	6a 00                	push   $0x0
40d0be:	e8 1d fb ff ff       	call   0x40cbe0
40d0c3:	8b c6                	mov    %esi,%eax
40d0c5:	e8 9a fe ff ff       	call   0x40cf64
40d0ca:	8d 46 0c             	lea    0xc(%esi),%eax
40d0cd:	e8 66 fc ff ff       	call   0x40cd38
40d0d2:	85 c0                	test   %eax,%eax
40d0d4:	7e d0                	jle    0x40d0a6
40d0d6:	5a                   	pop    %edx
40d0d7:	5e                   	pop    %esi
40d0d8:	5b                   	pop    %ebx
40d0d9:	c3                   	ret
40d0da:	8b c0                	mov    %eax,%eax
40d0dc:	53                   	push   %ebx
40d0dd:	51                   	push   %ecx
40d0de:	8b d8                	mov    %eax,%ebx
40d0e0:	8b d4                	mov    %esp,%edx
40d0e2:	8b 43 20             	mov    0x20(%ebx),%eax
40d0e5:	e8 d2 fc ff ff       	call   0x40cdbc
40d0ea:	8b 04 24             	mov    (%esp),%eax
40d0ed:	ff 48 0c             	decl   0xc(%eax)
40d0f0:	8b 04 24             	mov    (%esp),%eax
40d0f3:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40d0f7:	75 48                	jne    0x40d141
40d0f9:	8b d4                	mov    %esp,%edx
40d0fb:	8b 43 20             	mov    0x20(%ebx),%eax
40d0fe:	e8 31 fd ff ff       	call   0x40ce34
40d103:	e8 50 8f ff ff       	call   0x406058
40d108:	3b 43 24             	cmp    0x24(%ebx),%eax
40d10b:	74 34                	je     0x40d141
40d10d:	8d 43 0c             	lea    0xc(%ebx),%eax
40d110:	e8 17 fc ff ff       	call   0x40cd2c
40d115:	8b c8                	mov    %eax,%ecx
40d117:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
40d11d:	75 09                	jne    0x40d128
40d11f:	8b c3                	mov    %ebx,%eax
40d121:	e8 32 fe ff ff       	call   0x40cf58
40d126:	eb 19                	jmp    0x40d141
40d128:	85 c9                	test   %ecx,%ecx
40d12a:	7f 15                	jg     0x40d141
40d12c:	8b c1                	mov    %ecx,%eax
40d12e:	b9 ff ff 00 00       	mov    $0xffff,%ecx
40d133:	99                   	cltd
40d134:	f7 f9                	idiv   %ecx
40d136:	85 d2                	test   %edx,%edx
40d138:	75 07                	jne    0x40d141
40d13a:	8b c3                	mov    %ebx,%eax
40d13c:	e8 17 fe ff ff       	call   0x40cf58
40d141:	5a                   	pop    %edx
40d142:	5b                   	pop    %ebx
40d143:	c3                   	ret
40d144:	8b 10                	mov    (%eax),%edx
40d146:	33 c9                	xor    %ecx,%ecx
40d148:	89 08                	mov    %ecx,(%eax)
40d14a:	8b c2                	mov    %edx,%eax
40d14c:	e8 1b 61 ff ff       	call   0x40326c