40d90d:	0d 00 40 00 00       	or     $0x4000,%eax
40d912:	89 01                	mov    %eax,(%ecx)
40d914:	b0 01                	mov    $0x1,%al
40d916:	5d                   	pop    %ebp
40d917:	c3                   	ret
40d918:	8b ff                	mov    %edi,%edi
40d91a:	55                   	push   %ebp
40d91b:	8b ec                	mov    %esp,%ebp
40d91d:	5d                   	pop    %ebp
40d91e:	e9 7d fe ff ff       	jmp    0x40d7a0
40d923:	6a 0c                	push   $0xc
40d925:	68 e0 1d 42 00       	push   $0x421de0
40d92a:	e8 21 62 ff ff       	call   0x403b50
40d92f:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40d933:	8b 45 08             	mov    0x8(%ebp),%eax
40d936:	ff 30                	push   (%eax)
40d938:	e8 7b ea ff ff       	call   0x40c3b8
40d93d:	59                   	pop    %ecx
40d93e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d942:	8b 45 0c             	mov    0xc(%ebp),%eax
40d945:	8b 00                	mov    (%eax),%eax
40d947:	8b 30                	mov    (%eax),%esi
40d949:	8b d6                	mov    %esi,%edx
40d94b:	c1 fa 06             	sar    $0x6,%edx
40d94e:	8b c6                	mov    %esi,%eax
40d950:	83 e0 3f             	and    $0x3f,%eax
40d953:	6b c8 30             	imul   $0x30,%eax,%ecx
40d956:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40d95d:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40d962:	74 0b                	je     0x40d96f
40d964:	56                   	push   %esi
40d965:	e8 e2 00 00 00       	call   0x40da4c
40d96a:	59                   	pop    %ecx
40d96b:	8b f0                	mov    %eax,%esi
40d96d:	eb 0e                	jmp    0x40d97d
40d96f:	e8 93 a3 ff ff       	call   0x407d07
40d974:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40d97a:	83 ce ff             	or     $0xffffffff,%esi
40d97d:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d980:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40d987:	e8 0d 00 00 00       	call   0x40d999
40d98c:	8b c6                	mov    %esi,%eax
40d98e:	e8 03 62 ff ff       	call   0x403b96
40d993:	c2 0c 00             	ret    $0xc
40d996:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40d999:	8b 45 10             	mov    0x10(%ebp),%eax
40d99c:	ff 30                	push   (%eax)
40d99e:	e8 cc ea ff ff       	call   0x40c46f
40d9a3:	59                   	pop    %ecx
40d9a4:	c3                   	ret
40d9a5:	8b ff                	mov    %edi,%edi
40d9a7:	55                   	push   %ebp
40d9a8:	8b ec                	mov    %esp,%ebp
40d9aa:	83 ec 0c             	sub    $0xc,%esp
40d9ad:	8b 45 08             	mov    0x8(%ebp),%eax
40d9b0:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40d9b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d9b6:	89 45 f4             	mov    %eax,-0xc(%ebp)
40d9b9:	8d 45 f8             	lea    -0x8(%ebp),%eax
40d9bc:	50                   	push   %eax
40d9bd:	ff 75 0c             	push   0xc(%ebp)
40d9c0:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d9c3:	50                   	push   %eax
40d9c4:	e8 5a ff ff ff       	call   0x40d923
40d9c9:	8b e5                	mov    %ebp,%esp
40d9cb:	5d                   	pop    %ebp
40d9cc:	c3                   	ret
40d9cd:	8b ff                	mov    %edi,%edi
40d9cf:	55                   	push   %ebp
40d9d0:	8b ec                	mov    %esp,%ebp
40d9d2:	51                   	push   %ecx
40d9d3:	56                   	push   %esi
40d9d4:	8b 75 08             	mov    0x8(%ebp),%esi
40d9d7:	83 fe fe             	cmp    $0xfffffffe,%esi
40d9da:	75 15                	jne    0x40d9f1
40d9dc:	e8 13 a3 ff ff       	call   0x407cf4
40d9e1:	83 20 00             	andl   $0x0,(%eax)
40d9e4:	e8 1e a3 ff ff       	call   0x407d07
40d9e9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40d9ef:	eb 53                	jmp    0x40da44
40d9f1:	85 f6                	test   %esi,%esi
40d9f3:	78 37                	js     0x40da2c
40d9f5:	3b 35 c0 43 42 00    	cmp    0x4243c0,%esi
40d9fb:	73 2f                	jae    0x40da2c
40d9fd:	8b c6                	mov    %esi,%eax
40d9ff:	8b d6                	mov    %esi,%edx
40da01:	83 e0 3f             	and    $0x3f,%eax
40da04:	c1 fa 06             	sar    $0x6,%edx
40da07:	6b c8 30             	imul   $0x30,%eax,%ecx
40da0a:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40da11:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40da16:	74 14                	je     0x40da2c
40da18:	8d 45 08             	lea    0x8(%ebp),%eax
40da1b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40da1e:	8d 45 fc             	lea    -0x4(%ebp),%eax
40da21:	50                   	push   %eax
40da22:	56                   	push   %esi
40da23:	e8 7d ff ff ff       	call   0x40d9a5
40da28:	59                   	pop    %ecx
40da29:	59                   	pop    %ecx
40da2a:	eb 1b                	jmp    0x40da47
40da2c:	e8 c3 a2 ff ff       	call   0x407cf4
40da31:	83 20 00             	andl   $0x0,(%eax)
40da34:	e8 ce a2 ff ff       	call   0x407d07
40da39:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40da3f:	e8 ea a1 ff ff       	call   0x407c2e
40da44:	83 c8 ff             	or     $0xffffffff,%eax
40da47:	5e                   	pop    %esi
40da48:	8b e5                	mov    %ebp,%esp
40da4a:	5d                   	pop    %ebp
40da4b:	c3                   	ret
40da4c:	8b ff                	mov    %edi,%edi
40da4e:	55                   	push   %ebp
40da4f:	8b ec                	mov    %esp,%ebp
40da51:	56                   	push   %esi
40da52:	57                   	push   %edi
40da53:	8b 7d 08             	mov    0x8(%ebp),%edi
40da56:	57                   	push   %edi
40da57:	e8 d9 eb ff ff       	call   0x40c635
40da5c:	59                   	pop    %ecx
40da5d:	83 f8 ff             	cmp    $0xffffffff,%eax
40da60:	75 04                	jne    0x40da66
40da62:	33 f6                	xor    %esi,%esi
40da64:	eb 4e                	jmp    0x40dab4
40da66:	a1 c0 41 42 00       	mov    0x4241c0,%eax
40da6b:	83 ff 01             	cmp    $0x1,%edi
40da6e:	75 09                	jne    0x40da79
40da70:	f6 80 88 00 00 00 01 	testb  $0x1,0x88(%eax)
40da77:	75 0b                	jne    0x40da84
40da79:	83 ff 02             	cmp    $0x2,%edi
40da7c:	75 1c                	jne    0x40da9a
40da7e:	f6 40 58 01          	testb  $0x1,0x58(%eax)
40da82:	74 16                	je     0x40da9a
40da84:	6a 02                	push   $0x2
40da86:	e8 aa eb ff ff       	call   0x40c635
40da8b:	6a 01                	push   $0x1
40da8d:	8b f0                	mov    %eax,%esi
40da8f:	e8 a1 eb ff ff       	call   0x40c635
40da94:	59                   	pop    %ecx
40da95:	59                   	pop    %ecx
40da96:	3b c6                	cmp    %esi,%eax
40da98:	74 c8                	je     0x40da62
40da9a:	57                   	push   %edi
40da9b:	e8 95 eb ff ff       	call   0x40c635
40daa0:	59                   	pop    %ecx
40daa1:	50                   	push   %eax
40daa2:	ff 15 8c b0 41 00    	call   *0x41b08c
40daa8:	85 c0                	test   %eax,%eax
40daaa:	75 b6                	jne    0x40da62
40daac:	ff 15 48 b0 41 00    	call   *0x41b048
40dab2:	8b f0                	mov    %eax,%esi
40dab4:	57                   	push   %edi
40dab5:	e8 ea ea ff ff       	call   0x40c5a4
40daba:	59                   	pop    %ecx
40dabb:	8b cf                	mov    %edi,%ecx
40dabd:	83 e7 3f             	and    $0x3f,%edi
40dac0:	c1 f9 06             	sar    $0x6,%ecx
40dac3:	6b d7 30             	imul   $0x30,%edi,%edx
40dac6:	8b 0c 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%ecx
40dacd:	c6 44 11 28 00       	movb   $0x0,0x28(%ecx,%edx,1)
40dad2:	85 f6                	test   %esi,%esi
40dad4:	74 0c                	je     0x40dae2
40dad6:	56                   	push   %esi
40dad7:	e8 f5 a1 ff ff       	call   0x407cd1
40dadc:	59                   	pop    %ecx
40dadd:	83 c8 ff             	or     $0xffffffff,%eax
40dae0:	eb 02                	jmp    0x40dae4
40dae2:	33 c0                	xor    %eax,%eax
40dae4:	5f                   	pop    %edi
40dae5:	5e                   	pop    %esi
40dae6:	5d                   	pop    %ebp
40dae7:	c3                   	ret
40dae8:	8b ff                	mov    %edi,%edi
40daea:	55                   	push   %ebp
40daeb:	8b ec                	mov    %esp,%ebp
40daed:	56                   	push   %esi
40daee:	8b 75 08             	mov    0x8(%ebp),%esi
40daf1:	57                   	push   %edi
40daf2:	8d 7e 0c             	lea    0xc(%esi),%edi
40daf5:	8b 07                	mov    (%edi),%eax
40daf7:	c1 e8 0d             	shr    $0xd,%eax
40dafa:	a8 01                	test   $0x1,%al
40dafc:	74 24                	je     0x40db22
40dafe:	8b 07                	mov    (%edi),%eax
40db00:	c1 e8 06             	shr    $0x6,%eax
40db03:	a8 01                	test   $0x1,%al
40db05:	74 1b                	je     0x40db22
40db07:	ff 76 04             	push   0x4(%esi)
40db0a:	e8 15 bd ff ff       	call   0x409824
40db0f:	59                   	pop    %ecx
40db10:	b8 bf fe ff ff       	mov    $0xfffffebf,%eax
40db15:	f0 21 07             	lock and %eax,(%edi)
40db18:	33 c0                	xor    %eax,%eax
40db1a:	89 46 04             	mov    %eax,0x4(%esi)
40db1d:	89 06                	mov    %eax,(%esi)
40db1f:	89 46 08             	mov    %eax,0x8(%esi)
40db22:	5f                   	pop    %edi
40db23:	5e                   	pop    %esi
40db24:	5d                   	pop    %ebp
40db25:	c3                   	ret
40db26:	8b ff                	mov    %edi,%edi
40db28:	55                   	push   %ebp
40db29:	8b ec                	mov    %esp,%ebp
40db2b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40db2e:	56                   	push   %esi
40db2f:	8d 71 0c             	lea    0xc(%ecx),%esi
40db32:	8b 06                	mov    (%esi),%eax
40db34:	24 03                	and    $0x3,%al
40db36:	3c 02                	cmp    $0x2,%al
40db38:	74 04                	je     0x40db3e
40db3a:	33 c0                	xor    %eax,%eax
40db3c:	eb 4b                	jmp    0x40db89
40db3e:	8b 06                	mov    (%esi),%eax
40db40:	a8 c0                	test   $0xc0,%al
40db42:	74 f6                	je     0x40db3a
40db44:	8b 41 04             	mov    0x4(%ecx),%eax
40db47:	57                   	push   %edi
40db48:	8b 39                	mov    (%ecx),%edi
40db4a:	2b f8                	sub    %eax,%edi
40db4c:	89 01                	mov    %eax,(%ecx)
40db4e:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40db52:	85 ff                	test   %edi,%edi
40db54:	7e 30                	jle    0x40db86
40db56:	57                   	push   %edi
40db57:	50                   	push   %eax
40db58:	51                   	push   %ecx
40db59:	e8 82 da ff ff       	call   0x40b5e0
40db5e:	59                   	pop    %ecx
40db5f:	50                   	push   %eax
40db60:	e8 57 0d 00 00       	call   0x40e8bc
40db65:	83 c4 0c             	add    $0xc,%esp
40db68:	3b f8                	cmp    %eax,%edi
40db6a:	74 0b                	je     0x40db77
40db6c:	6a 10                	push   $0x10
40db6e:	58                   	pop    %eax
40db6f:	f0 09 06             	lock or %eax,(%esi)
40db72:	83 c8 ff             	or     $0xffffffff,%eax
40db75:	eb 11                	jmp    0x40db88
40db77:	8b 06                	mov    (%esi),%eax
40db79:	c1 e8 02             	shr    $0x2,%eax
40db7c:	a8 01                	test   $0x1,%al
40db7e:	74 06                	je     0x40db86
40db80:	6a fd                	push   $0xfffffffd
40db82:	58                   	pop    %eax
40db83:	f0 21 06             	lock and %eax,(%esi)
40db86:	33 c0                	xor    %eax,%eax
40db88:	5f                   	pop    %edi
40db89:	5e                   	pop    %esi
40db8a:	5d                   	pop    %ebp
40db8b:	c3                   	ret
40db8c:	8b ff                	mov    %edi,%edi
40db8e:	55                   	push   %ebp
40db8f:	8b ec                	mov    %esp,%ebp
40db91:	56                   	push   %esi
40db92:	8b 75 08             	mov    0x8(%ebp),%esi
40db95:	85 f6                	test   %esi,%esi
40db97:	75 09                	jne    0x40dba2
40db99:	56                   	push   %esi
40db9a:	e8 3d 00 00 00       	call   0x40dbdc
40db9f:	59                   	pop    %ecx
40dba0:	eb 2e                	jmp    0x40dbd0
40dba2:	56                   	push   %esi
40dba3:	e8 7e ff ff ff       	call   0x40db26
40dba8:	59                   	pop    %ecx
40dba9:	85 c0                	test   %eax,%eax
40dbab:	74 05                	je     0x40dbb2
40dbad:	83 c8 ff             	or     $0xffffffff,%eax
40dbb0:	eb 1e                	jmp    0x40dbd0
40dbb2:	8b 46 0c             	mov    0xc(%esi),%eax
40dbb5:	c1 e8 0b             	shr    $0xb,%eax
40dbb8:	a8 01                	test   $0x1,%al
40dbba:	74 12                	je     0x40dbce
40dbbc:	56                   	push   %esi
40dbbd:	e8 1e da ff ff       	call   0x40b5e0
40dbc2:	50                   	push   %eax
40dbc3:	e8 c6 6b 00 00       	call   0x41478e
40dbc8:	59                   	pop    %ecx
40dbc9:	59                   	pop    %ecx
40dbca:	85 c0                	test   %eax,%eax
40dbcc:	75 df                	jne    0x40dbad
40dbce:	33 c0                	xor    %eax,%eax
40dbd0:	5e                   	pop    %esi
40dbd1:	5d                   	pop    %ebp
40dbd2:	c3                   	ret
40dbd3:	6a 01                	push   $0x1
40dbd5:	e8 02 00 00 00       	call   0x40dbdc
40dbda:	59                   	pop    %ecx
40dbdb:	c3                   	ret
40dbdc:	6a 1c                	push   $0x1c
40dbde:	68 00 1e 42 00       	push   $0x421e00
40dbe3:	e8 68 5f ff ff       	call   0x403b50
40dbe8:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40dbec:	83 65 dc 00          	andl   $0x0,-0x24(%ebp)
40dbf0:	6a 08                	push   $0x8
40dbf2:	e8 ae 12 00 00       	call   0x40eea5
40dbf7:	59                   	pop    %ecx
40dbf8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40dbfc:	8b 35 a8 41 42 00    	mov    0x4241a8,%esi
40dc02:	a1 a4 41 42 00       	mov    0x4241a4,%eax
40dc07:	8d 04 86             	lea    (%esi,%eax,4),%eax
40dc0a:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40dc0d:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dc10:	89 75 e0             	mov    %esi,-0x20(%ebp)
40dc13:	3b f0                	cmp    %eax,%esi
40dc15:	74 74                	je     0x40dc8b
40dc17:	8b 3e                	mov    (%esi),%edi
40dc19:	89 7d d8             	mov    %edi,-0x28(%ebp)
40dc1c:	85 ff                	test   %edi,%edi
40dc1e:	74 56                	je     0x40dc76
40dc20:	57                   	push   %edi
40dc21:	e8 04 db ff ff       	call   0x40b72a
40dc26:	59                   	pop    %ecx
40dc27:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40dc2e:	8b 47 0c             	mov    0xc(%edi),%eax
40dc31:	c1 e8 0d             	shr    $0xd,%eax
40dc34:	a8 01                	test   $0x1,%al
40dc36:	74 32                	je     0x40dc6a
40dc38:	83 fb 01             	cmp    $0x1,%ebx
40dc3b:	75 11                	jne    0x40dc4e
40dc3d:	57                   	push   %edi
40dc3e:	e8 49 ff ff ff       	call   0x40db8c
40dc43:	59                   	pop    %ecx
40dc44:	83 f8 ff             	cmp    $0xffffffff,%eax
40dc47:	74 21                	je     0x40dc6a
40dc49:	ff 45 e4             	incl   -0x1c(%ebp)
40dc4c:	eb 1c                	jmp    0x40dc6a
40dc4e:	85 db                	test   %ebx,%ebx
40dc50:	75 18                	jne    0x40dc6a
40dc52:	8b 47 0c             	mov    0xc(%edi),%eax
40dc55:	d1 e8                	shr    $1,%eax
40dc57:	a8 01                	test   $0x1,%al
40dc59:	74 0f                	je     0x40dc6a
40dc5b:	57                   	push   %edi
40dc5c:	e8 2b ff ff ff       	call   0x40db8c
40dc61:	59                   	pop    %ecx
40dc62:	83 f8 ff             	cmp    $0xffffffff,%eax
40dc65:	75 03                	jne    0x40dc6a
40dc67:	09 45 dc             	or     %eax,-0x24(%ebp)
40dc6a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40dc6e:	e8 0e 00 00 00       	call   0x40dc81
40dc73:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40dc76:	83 c6 04             	add    $0x4,%esi
40dc79:	eb 95                	jmp    0x40dc10
40dc7b:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dc7e:	8b 75 e0             	mov    -0x20(%ebp),%esi
40dc81:	ff 75 d8             	push   -0x28(%ebp)
40dc84:	e8 b5 da ff ff       	call   0x40b73e
40dc89:	59                   	pop    %ecx
40dc8a:	c3                   	ret
40dc8b:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)