40dca6:	83 c8 ff             	or     $0xffffffff,%eax
40dca9:	eb 47                	jmp    0x40dcf2
40dcab:	8b 75 14             	mov    0x14(%ebp),%esi
40dcae:	85 f6                	test   %esi,%esi
40dcb0:	74 0a                	je     0x40dcbc
40dcb2:	83 fe 01             	cmp    $0x1,%esi
40dcb5:	74 05                	je     0x40dcbc
40dcb7:	83 fe 02             	cmp    $0x2,%esi
40dcba:	75 da                	jne    0x40dc96
40dcbc:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40dcc0:	ff 75 08             	push   0x8(%ebp)
40dcc3:	e8 be da ff ff       	call   0x40b786
40dcc8:	59                   	pop    %ecx
40dcc9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40dccd:	56                   	push   %esi
40dcce:	ff 75 10             	push   0x10(%ebp)
40dcd1:	ff 75 0c             	push   0xc(%ebp)
40dcd4:	ff 75 08             	push   0x8(%ebp)
40dcd7:	e8 0c 01 00 00       	call   0x40dde8
40dcdc:	83 c4 10             	add    $0x10,%esp
40dcdf:	8b f0                	mov    %eax,%esi
40dce1:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40dce4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40dceb:	e8 15 00 00 00       	call   0x40dd05
40dcf0:	8b c6                	mov    %esi,%eax
40dcf2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40dcf5:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40dcfc:	59                   	pop    %ecx
40dcfd:	5f                   	pop    %edi
40dcfe:	5e                   	pop    %esi
40dcff:	5b                   	pop    %ebx
40dd00:	c9                   	leave
40dd01:	c3                   	ret
40dd02:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40dd05:	ff 75 08             	push   0x8(%ebp)
40dd08:	e8 8d da ff ff       	call   0x40b79a
40dd0d:	59                   	pop    %ecx
40dd0e:	c3                   	ret
40dd0f:	8b ff                	mov    %edi,%edi
40dd11:	55                   	push   %ebp
40dd12:	8b ec                	mov    %esp,%ebp
40dd14:	83 7d 14 02          	cmpl   $0x2,0x14(%ebp)
40dd18:	56                   	push   %esi
40dd19:	57                   	push   %edi
40dd1a:	0f 84 8c 00 00 00    	je     0x40ddac
40dd20:	8b 45 08             	mov    0x8(%ebp),%eax
40dd23:	8b 40 0c             	mov    0xc(%eax),%eax
40dd26:	90                   	nop
40dd27:	a9 c0 04 00 00       	test   $0x4c0,%eax
40dd2c:	74 7e                	je     0x40ddac
40dd2e:	8b 45 08             	mov    0x8(%ebp),%eax
40dd31:	8b 40 0c             	mov    0xc(%eax),%eax
40dd34:	90                   	nop
40dd35:	a8 06                	test   $0x6,%al
40dd37:	75 73                	jne    0x40ddac
40dd39:	8b 45 08             	mov    0x8(%ebp),%eax
40dd3c:	33 f6                	xor    %esi,%esi
40dd3e:	39 70 08             	cmp    %esi,0x8(%eax)
40dd41:	7e 69                	jle    0x40ddac
40dd43:	8b 50 10             	mov    0x10(%eax),%edx
40dd46:	90                   	nop
40dd47:	8b c2                	mov    %edx,%eax
40dd49:	8b ca                	mov    %edx,%ecx
40dd4b:	83 e0 3f             	and    $0x3f,%eax
40dd4e:	c1 f9 06             	sar    $0x6,%ecx
40dd51:	6b c0 38             	imul   $0x38,%eax,%eax
40dd54:	8b 0c 8d c0 4a 43 00 	mov    0x434ac0(,%ecx,4),%ecx
40dd5b:	80 7c 01 28 00       	cmpb   $0x0,0x28(%ecx,%eax,1)
40dd60:	7c 4a                	jl     0x40ddac
40dd62:	80 7c 01 29 00       	cmpb   $0x0,0x29(%ecx,%eax,1)
40dd67:	75 43                	jne    0x40ddac
40dd69:	39 75 14             	cmp    %esi,0x14(%ebp)
40dd6c:	75 44                	jne    0x40ddb2
40dd6e:	6a 01                	push   $0x1
40dd70:	56                   	push   %esi
40dd71:	56                   	push   %esi
40dd72:	52                   	push   %edx
40dd73:	e8 d5 9f 00 00       	call   0x417d4d
40dd78:	8b fa                	mov    %edx,%edi
40dd7a:	83 c4 10             	add    $0x10,%esp
40dd7d:	8b c8                	mov    %eax,%ecx
40dd7f:	3b fe                	cmp    %esi,%edi
40dd81:	7c 29                	jl     0x40ddac
40dd83:	7f 04                	jg     0x40dd89
40dd85:	3b ce                	cmp    %esi,%ecx
40dd87:	72 23                	jb     0x40ddac
40dd89:	8b 75 08             	mov    0x8(%ebp),%esi
40dd8c:	8d 45 0c             	lea    0xc(%ebp),%eax
40dd8f:	50                   	push   %eax
40dd90:	8b 46 08             	mov    0x8(%esi),%eax
40dd93:	99                   	cltd
40dd94:	2b c8                	sub    %eax,%ecx
40dd96:	1b fa                	sbb    %edx,%edi
40dd98:	57                   	push   %edi
40dd99:	51                   	push   %ecx
40dd9a:	ff 75 10             	push   0x10(%ebp)
40dd9d:	ff 75 0c             	push   0xc(%ebp)
40dda0:	e8 65 fe ff ff       	call   0x40dc0a
40dda5:	83 c4 14             	add    $0x14,%esp
40dda8:	85 c0                	test   %eax,%eax
40ddaa:	79 09                	jns    0x40ddb5
40ddac:	32 c0                	xor    %al,%al
40ddae:	5f                   	pop    %edi
40ddaf:	5e                   	pop    %esi
40ddb0:	5d                   	pop    %ebp
40ddb1:	c3                   	ret
40ddb2:	8b 75 08             	mov    0x8(%ebp),%esi
40ddb5:	8b 46 04             	mov    0x4(%esi),%eax
40ddb8:	8b 0e                	mov    (%esi),%ecx
40ddba:	2b c1                	sub    %ecx,%eax
40ddbc:	99                   	cltd
40ddbd:	3b 55 10             	cmp    0x10(%ebp),%edx
40ddc0:	7f ea                	jg     0x40ddac
40ddc2:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ddc5:	7c 04                	jl     0x40ddcb
40ddc7:	3b c7                	cmp    %edi,%eax
40ddc9:	77 e1                	ja     0x40ddac
40ddcb:	8b 46 08             	mov    0x8(%esi),%eax
40ddce:	99                   	cltd
40ddcf:	39 55 10             	cmp    %edx,0x10(%ebp)
40ddd2:	7f d8                	jg     0x40ddac
40ddd4:	7c 04                	jl     0x40ddda
40ddd6:	3b f8                	cmp    %eax,%edi
40ddd8:	77 d2                	ja     0x40ddac
40ddda:	03 cf                	add    %edi,%ecx
40dddc:	b0 01                	mov    $0x1,%al
40ddde:	89 0e                	mov    %ecx,(%esi)
40dde0:	8b 4d 08             	mov    0x8(%ebp),%ecx
40dde3:	29 79 08             	sub    %edi,0x8(%ecx)
40dde6:	eb c6                	jmp    0x40ddae
40dde8:	8b ff                	mov    %edi,%edi
40ddea:	55                   	push   %ebp
40ddeb:	8b ec                	mov    %esp,%ebp
40dded:	8b 45 08             	mov    0x8(%ebp),%eax
40ddf0:	8b 40 0c             	mov    0xc(%eax),%eax
40ddf3:	90                   	nop
40ddf4:	c1 e8 0d             	shr    $0xd,%eax
40ddf7:	a8 01                	test   $0x1,%al
40ddf9:	75 10                	jne    0x40de0b
40ddfb:	e8 fb 0f 00 00       	call   0x40edfb
40de00:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40de06:	83 c8 ff             	or     $0xffffffff,%eax
40de09:	5d                   	pop    %ebp
40de0a:	c3                   	ret
40de0b:	8b 45 08             	mov    0x8(%ebp),%eax
40de0e:	53                   	push   %ebx
40de0f:	56                   	push   %esi
40de10:	57                   	push   %edi
40de11:	6a f7                	push   $0xfffffff7
40de13:	59                   	pop    %ecx
40de14:	83 c0 0c             	add    $0xc,%eax
40de17:	f0 21 08             	lock and %ecx,(%eax)
40de1a:	8b 75 14             	mov    0x14(%ebp),%esi
40de1d:	8b 7d 10             	mov    0x10(%ebp),%edi
40de20:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40de23:	56                   	push   %esi
40de24:	57                   	push   %edi
40de25:	53                   	push   %ebx
40de26:	ff 75 08             	push   0x8(%ebp)
40de29:	e8 e1 fe ff ff       	call   0x40dd0f
40de2e:	83 c4 10             	add    $0x10,%esp
40de31:	84 c0                	test   %al,%al
40de33:	0f 85 86 00 00 00    	jne    0x40debf
40de39:	83 fe 01             	cmp    $0x1,%esi
40de3c:	75 0f                	jne    0x40de4d
40de3e:	ff 75 08             	push   0x8(%ebp)
40de41:	e8 74 91 00 00       	call   0x416fba
40de46:	03 d8                	add    %eax,%ebx
40de48:	59                   	pop    %ecx
40de49:	13 fa                	adc    %edx,%edi
40de4b:	33 f6                	xor    %esi,%esi
40de4d:	ff 75 08             	push   0x8(%ebp)
40de50:	e8 7c f6 ff ff       	call   0x40d4d1
40de55:	8b 45 08             	mov    0x8(%ebp),%eax
40de58:	59                   	pop    %ecx
40de59:	8b 48 04             	mov    0x4(%eax),%ecx
40de5c:	83 60 08 00          	andl   $0x0,0x8(%eax)
40de60:	89 08                	mov    %ecx,(%eax)
40de62:	8b 45 08             	mov    0x8(%ebp),%eax
40de65:	8b 40 0c             	mov    0xc(%eax),%eax
40de68:	90                   	nop
40de69:	c1 e8 02             	shr    $0x2,%eax
40de6c:	a8 01                	test   $0x1,%al
40de6e:	8b 45 08             	mov    0x8(%ebp),%eax
40de71:	74 0b                	je     0x40de7e
40de73:	6a fc                	push   $0xfffffffc
40de75:	59                   	pop    %ecx
40de76:	83 c0 0c             	add    $0xc,%eax
40de79:	f0 21 08             	lock and %ecx,(%eax)
40de7c:	eb 23                	jmp    0x40dea1
40de7e:	8b 40 0c             	mov    0xc(%eax),%eax
40de81:	90                   	nop
40de82:	83 e0 41             	and    $0x41,%eax
40de85:	3c 41                	cmp    $0x41,%al
40de87:	75 18                	jne    0x40dea1
40de89:	8b 45 08             	mov    0x8(%ebp),%eax
40de8c:	8b 40 0c             	mov    0xc(%eax),%eax
40de8f:	90                   	nop
40de90:	c1 e8 08             	shr    $0x8,%eax
40de93:	a8 01                	test   $0x1,%al
40de95:	75 0a                	jne    0x40dea1
40de97:	8b 45 08             	mov    0x8(%ebp),%eax
40de9a:	c7 40 18 00 02 00 00 	movl   $0x200,0x18(%eax)
40dea1:	8b 45 08             	mov    0x8(%ebp),%eax
40dea4:	8b 40 10             	mov    0x10(%eax),%eax
40dea7:	90                   	nop
40dea8:	56                   	push   %esi
40dea9:	57                   	push   %edi
40deaa:	53                   	push   %ebx
40deab:	50                   	push   %eax
40deac:	e8 9c 9e 00 00       	call   0x417d4d
40deb1:	23 c2                	and    %edx,%eax
40deb3:	83 c4 10             	add    $0x10,%esp
40deb6:	83 f8 ff             	cmp    $0xffffffff,%eax
40deb9:	75 04                	jne    0x40debf
40debb:	0b c0                	or     %eax,%eax
40debd:	eb 02                	jmp    0x40dec1
40debf:	33 c0                	xor    %eax,%eax
40dec1:	5f                   	pop    %edi
40dec2:	5e                   	pop    %esi
40dec3:	5b                   	pop    %ebx
40dec4:	5d                   	pop    %ebp
40dec5:	c3                   	ret
40dec6:	8b ff                	mov    %edi,%edi
40dec8:	55                   	push   %ebp
40dec9:	8b ec                	mov    %esp,%ebp
40decb:	ff 75 14             	push   0x14(%ebp)
40dece:	ff 75 10             	push   0x10(%ebp)
40ded1:	ff 75 0c             	push   0xc(%ebp)
40ded4:	ff 75 08             	push   0x8(%ebp)
40ded7:	e8 a8 fd ff ff       	call   0x40dc84
40dedc:	83 c4 10             	add    $0x10,%esp
40dedf:	5d                   	pop    %ebp
40dee0:	c3                   	ret
40dee1:	6a 0c                	push   $0xc
40dee3:	68 b8 15 43 00       	push   $0x4315b8
40dee8:	e8 d3 a0 ff ff       	call   0x407fc0
40deed:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40def1:	8b 45 08             	mov    0x8(%ebp),%eax
40def4:	ff 30                	push   (%eax)
40def6:	e8 8b d8 ff ff       	call   0x40b786
40defb:	59                   	pop    %ecx
40defc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40df00:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40df03:	e8 34 00 00 00       	call   0x40df3c
40df08:	8b f0                	mov    %eax,%esi
40df0a:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40df0d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40df14:	e8 17 00 00 00       	call   0x40df30
40df19:	8b c6                	mov    %esi,%eax
40df1b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40df1e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40df25:	59                   	pop    %ecx
40df26:	5f                   	pop    %edi
40df27:	5e                   	pop    %esi
40df28:	5b                   	pop    %ebx
40df29:	c9                   	leave
40df2a:	c2 0c 00             	ret    $0xc
40df2d:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40df30:	8b 45 10             	mov    0x10(%ebp),%eax
40df33:	ff 30                	push   (%eax)
40df35:	e8 60 d8 ff ff       	call   0x40b79a
40df3a:	59                   	pop    %ecx
40df3b:	c3                   	ret
40df3c:	8b ff                	mov    %edi,%edi
40df3e:	55                   	push   %ebp
40df3f:	8b ec                	mov    %esp,%ebp
40df41:	51                   	push   %ecx
40df42:	56                   	push   %esi
40df43:	8b f1                	mov    %ecx,%esi
40df45:	57                   	push   %edi
40df46:	8b 06                	mov    (%esi),%eax
40df48:	8b 38                	mov    (%eax),%edi
40df4a:	57                   	push   %edi
40df4b:	e8 b5 70 00 00       	call   0x415005
40df50:	88 45 fc             	mov    %al,-0x4(%ebp)
40df53:	8b 06                	mov    (%esi),%eax
40df55:	ff 30                	push   (%eax)
40df57:	8b 46 0c             	mov    0xc(%esi),%eax
40df5a:	ff 30                	push   (%eax)
40df5c:	8b 46 08             	mov    0x8(%esi),%eax
40df5f:	ff 30                	push   (%eax)
40df61:	8b 46 04             	mov    0x4(%esi),%eax
40df64:	ff 30                	push   (%eax)
40df66:	e8 14 00 00 00       	call   0x40df7f
40df6b:	57                   	push   %edi
40df6c:	ff 75 fc             	push   -0x4(%ebp)
40df6f:	8b f0                	mov    %eax,%esi
40df71:	e8 3b 71 00 00       	call   0x4150b1
40df76:	83 c4 1c             	add    $0x1c,%esp
40df79:	8b c6                	mov    %esi,%eax
40df7b:	5f                   	pop    %edi
40df7c:	5e                   	pop    %esi
40df7d:	c9                   	leave
40df7e:	c3                   	ret
40df7f:	8b ff                	mov    %edi,%edi
40df81:	55                   	push   %ebp
40df82:	8b ec                	mov    %esp,%ebp
40df84:	83 ec 0c             	sub    $0xc,%esp
40df87:	53                   	push   %ebx
40df88:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40df8b:	56                   	push   %esi
40df8c:	57                   	push   %edi
40df8d:	85 db                	test   %ebx,%ebx
40df8f:	74 1e                	je     0x40dfaf
40df91:	8b 75 10             	mov    0x10(%ebp),%esi
40df94:	85 f6                	test   %esi,%esi
40df96:	74 17                	je     0x40dfaf
40df98:	8b 7d 14             	mov    0x14(%ebp),%edi
40df9b:	85 ff                	test   %edi,%edi
40df9d:	75 17                	jne    0x40dfb6
40df9f:	e8 57 0e 00 00       	call   0x40edfb
40dfa4:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dfaa:	e8 d2 f0 ff ff       	call   0x40d081
40dfaf:	33 c0                	xor    %eax,%eax
40dfb1:	5f                   	pop    %edi
40dfb2:	5e                   	pop    %esi
40dfb3:	5b                   	pop    %ebx
40dfb4:	c9                   	leave
40dfb5:	c3                   	ret
40dfb6:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40dfba:	74 e3                	je     0x40df9f
40dfbc:	83 c8 ff             	or     $0xffffffff,%eax
40dfbf:	33 d2                	xor    %edx,%edx
40dfc1:	f7 f3                	div    %ebx
40dfc3:	3b f0                	cmp    %eax,%esi
40dfc5:	77 d8                	ja     0x40df9f
40dfc7:	8d 47 0c             	lea    0xc(%edi),%eax
40dfca:	89 45 f4             	mov    %eax,-0xc(%ebp)
40dfcd:	8b 00                	mov    (%eax),%eax
40dfcf:	90                   	nop
40dfd0:	a9 c0 04 00 00       	test   $0x4c0,%eax
40dfd5:	74 05                	je     0x40dfdc
40dfd7:	8b 4f 18             	mov    0x18(%edi),%ecx
40dfda:	eb 05                	jmp    0x40dfe1
40dfdc:	b9 00 10 00 00       	mov    $0x1000,%ecx
40dfe1:	0f af de             	imul   %esi,%ebx
40dfe4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40dfe7:	8b f3                	mov    %ebx,%esi
40dfe9:	85 db                	test   %ebx,%ebx
40dfeb:	0f 84 f0 00 00 00    	je     0x40e0e1
40dff1:	8b 55 08             	mov    0x8(%ebp),%edx
40dff4:	8b 47 0c             	mov    0xc(%edi),%eax
40dff7:	90                   	nop
40dff8:	a8 c0                	test   $0xc0,%al
40dffa:	74 40                	je     0x40e03c
40dffc:	8b 47 08             	mov    0x8(%edi),%eax
40dfff:	85 c0                	test   %eax,%eax
40e001:	74 39                	je     0x40e03c
40e003:	0f 88 e0 00 00 00    	js     0x40e0e9