40db01:	59                   	pop    %ecx
40db02:	5f                   	pop    %edi
40db03:	5e                   	pop    %esi
40db04:	5b                   	pop    %ebx
40db05:	c9                   	leave
40db06:	c3                   	ret
40db07:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40db0b:	56                   	push   %esi
40db0c:	e8 75 dc ff ff       	call   0x40b786
40db11:	59                   	pop    %ecx
40db12:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40db16:	56                   	push   %esi
40db17:	ff 75 14             	push   0x14(%ebp)
40db1a:	ff 75 10             	push   0x10(%ebp)
40db1d:	ff 75 0c             	push   0xc(%ebp)
40db20:	ff 75 08             	push   0x8(%ebp)
40db23:	e8 86 fd ff ff       	call   0x40d8ae
40db28:	83 c4 14             	add    $0x14,%esp
40db2b:	8b f8                	mov    %eax,%edi
40db2d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40db30:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40db37:	e8 0a 00 00 00       	call   0x40db46
40db3c:	8b c7                	mov    %edi,%eax
40db3e:	eb b7                	jmp    0x40daf7
40db40:	8b 75 18             	mov    0x18(%ebp),%esi
40db43:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40db46:	56                   	push   %esi
40db47:	e8 4e dc ff ff       	call   0x40b79a
40db4c:	59                   	pop    %ecx
40db4d:	c3                   	ret
40db4e:	8b ff                	mov    %edi,%edi
40db50:	55                   	push   %ebp
40db51:	8b ec                	mov    %esp,%ebp
40db53:	56                   	push   %esi
40db54:	8b 75 14             	mov    0x14(%ebp),%esi
40db57:	85 f6                	test   %esi,%esi
40db59:	75 04                	jne    0x40db5f
40db5b:	33 c0                	xor    %eax,%eax
40db5d:	eb 6d                	jmp    0x40dbcc
40db5f:	8b 45 08             	mov    0x8(%ebp),%eax
40db62:	85 c0                	test   %eax,%eax
40db64:	75 13                	jne    0x40db79
40db66:	e8 90 12 00 00       	call   0x40edfb
40db6b:	6a 16                	push   $0x16
40db6d:	5e                   	pop    %esi
40db6e:	89 30                	mov    %esi,(%eax)
40db70:	e8 0c f5 ff ff       	call   0x40d081
40db75:	8b c6                	mov    %esi,%eax
40db77:	eb 53                	jmp    0x40dbcc
40db79:	57                   	push   %edi
40db7a:	8b 7d 10             	mov    0x10(%ebp),%edi
40db7d:	85 ff                	test   %edi,%edi
40db7f:	74 14                	je     0x40db95
40db81:	39 75 0c             	cmp    %esi,0xc(%ebp)
40db84:	72 0f                	jb     0x40db95
40db86:	56                   	push   %esi
40db87:	57                   	push   %edi
40db88:	50                   	push   %eax
40db89:	e8 e2 ad ff ff       	call   0x408970
40db8e:	83 c4 0c             	add    $0xc,%esp
40db91:	33 c0                	xor    %eax,%eax
40db93:	eb 36                	jmp    0x40dbcb
40db95:	ff 75 0c             	push   0xc(%ebp)
40db98:	6a 00                	push   $0x0
40db9a:	50                   	push   %eax
40db9b:	e8 50 b3 ff ff       	call   0x408ef0
40dba0:	83 c4 0c             	add    $0xc,%esp
40dba3:	85 ff                	test   %edi,%edi
40dba5:	75 09                	jne    0x40dbb0
40dba7:	e8 4f 12 00 00       	call   0x40edfb
40dbac:	6a 16                	push   $0x16
40dbae:	eb 0c                	jmp    0x40dbbc
40dbb0:	39 75 0c             	cmp    %esi,0xc(%ebp)
40dbb3:	73 13                	jae    0x40dbc8
40dbb5:	e8 41 12 00 00       	call   0x40edfb
40dbba:	6a 22                	push   $0x22
40dbbc:	5e                   	pop    %esi
40dbbd:	89 30                	mov    %esi,(%eax)
40dbbf:	e8 bd f4 ff ff       	call   0x40d081
40dbc4:	8b c6                	mov    %esi,%eax
40dbc6:	eb 03                	jmp    0x40dbcb
40dbc8:	6a 16                	push   $0x16
40dbca:	58                   	pop    %eax
40dbcb:	5f                   	pop    %edi
40dbcc:	5e                   	pop    %esi
40dbcd:	5d                   	pop    %ebp
40dbce:	c3                   	ret
40dbcf:	8b ff                	mov    %edi,%edi
40dbd1:	55                   	push   %ebp
40dbd2:	8b ec                	mov    %esp,%ebp
40dbd4:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40dbd8:	75 15                	jne    0x40dbef
40dbda:	e8 1c 12 00 00       	call   0x40edfb
40dbdf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dbe5:	e8 97 f4 ff ff       	call   0x40d081
40dbea:	83 c8 ff             	or     $0xffffffff,%eax
40dbed:	5d                   	pop    %ebp
40dbee:	c3                   	ret
40dbef:	8b 45 0c             	mov    0xc(%ebp),%eax
40dbf2:	85 c0                	test   %eax,%eax
40dbf4:	74 e4                	je     0x40dbda
40dbf6:	6a 00                	push   $0x0
40dbf8:	ff 70 04             	push   0x4(%eax)
40dbfb:	ff 30                	push   (%eax)
40dbfd:	ff 75 08             	push   0x8(%ebp)
40dc00:	e8 c1 02 00 00       	call   0x40dec6
40dc05:	83 c4 10             	add    $0x10,%esp
40dc08:	5d                   	pop    %ebp
40dc09:	c3                   	ret
40dc0a:	8b ff                	mov    %edi,%edi
40dc0c:	55                   	push   %ebp
40dc0d:	8b ec                	mov    %esp,%ebp
40dc0f:	8b 55 08             	mov    0x8(%ebp),%edx
40dc12:	2b 55 10             	sub    0x10(%ebp),%edx
40dc15:	53                   	push   %ebx
40dc16:	56                   	push   %esi
40dc17:	57                   	push   %edi
40dc18:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dc1b:	1b 7d 14             	sbb    0x14(%ebp),%edi
40dc1e:	33 c9                	xor    %ecx,%ecx
40dc20:	33 c0                	xor    %eax,%eax
40dc22:	41                   	inc    %ecx
40dc23:	39 45 0c             	cmp    %eax,0xc(%ebp)
40dc26:	7f 0b                	jg     0x40dc33
40dc28:	7c 05                	jl     0x40dc2f
40dc2a:	39 45 08             	cmp    %eax,0x8(%ebp)
40dc2d:	73 04                	jae    0x40dc33
40dc2f:	8b d9                	mov    %ecx,%ebx
40dc31:	eb 02                	jmp    0x40dc35
40dc33:	8b d8                	mov    %eax,%ebx
40dc35:	39 45 14             	cmp    %eax,0x14(%ebp)
40dc38:	7f 0b                	jg     0x40dc45
40dc3a:	7c 05                	jl     0x40dc41
40dc3c:	39 45 10             	cmp    %eax,0x10(%ebp)
40dc3f:	73 04                	jae    0x40dc45
40dc41:	8b f1                	mov    %ecx,%esi
40dc43:	eb 02                	jmp    0x40dc47
40dc45:	8b f0                	mov    %eax,%esi
40dc47:	3b de                	cmp    %esi,%ebx
40dc49:	74 2c                	je     0x40dc77
40dc4b:	39 45 0c             	cmp    %eax,0xc(%ebp)
40dc4e:	7f 0b                	jg     0x40dc5b
40dc50:	7c 05                	jl     0x40dc57
40dc52:	39 45 08             	cmp    %eax,0x8(%ebp)
40dc55:	73 04                	jae    0x40dc5b
40dc57:	8b f1                	mov    %ecx,%esi
40dc59:	eb 02                	jmp    0x40dc5d
40dc5b:	8b f0                	mov    %eax,%esi
40dc5d:	3b f8                	cmp    %eax,%edi
40dc5f:	7f 06                	jg     0x40dc67
40dc61:	7c 06                	jl     0x40dc69
40dc63:	3b d0                	cmp    %eax,%edx
40dc65:	72 02                	jb     0x40dc69
40dc67:	8b c8                	mov    %eax,%ecx
40dc69:	3b f1                	cmp    %ecx,%esi
40dc6b:	74 0a                	je     0x40dc77
40dc6d:	83 ca ff             	or     $0xffffffff,%edx
40dc70:	b8 16 02 07 80       	mov    $0x80070216,%eax
40dc75:	8b fa                	mov    %edx,%edi
40dc77:	8b 4d 18             	mov    0x18(%ebp),%ecx
40dc7a:	89 11                	mov    %edx,(%ecx)
40dc7c:	89 79 04             	mov    %edi,0x4(%ecx)
40dc7f:	5f                   	pop    %edi
40dc80:	5e                   	pop    %esi
40dc81:	5b                   	pop    %ebx
40dc82:	5d                   	pop    %ebp
40dc83:	c3                   	ret
40dc84:	6a 0c                	push   $0xc
40dc86:	68 98 15 43 00       	push   $0x431598
40dc8b:	e8 30 a3 ff ff       	call   0x407fc0
40dc90:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40dc94:	75 15                	jne    0x40dcab
40dc96:	e8 60 11 00 00       	call   0x40edfb
40dc9b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dca1:	e8 db f3 ff ff       	call   0x40d081
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