407967:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40796a:	e8 e0 df ff ff       	call   0x40594f
40796f:	8b 36                	mov    (%esi),%esi
407971:	89 75 ec             	mov    %esi,-0x14(%ebp)
407974:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407978:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40797b:	e8 cf df ff ff       	call   0x40594f
407980:	85 f6                	test   %esi,%esi
407982:	74 02                	je     0x407986
407984:	8b 1e                	mov    (%esi),%ebx
407986:	8b cb                	mov    %ebx,%ecx
407988:	e8 7f 1d 00 00       	call   0x40970c
40798d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407991:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407994:	e8 b6 df ff ff       	call   0x40594f
407999:	e8 5b 79 00 00       	call   0x40f2f9
40799e:	c3                   	ret
40799f:	8d 45 e8             	lea    -0x18(%ebp),%eax
4079a2:	50                   	push   %eax
4079a3:	68 68 1a 40 00       	push   $0x401a68
4079a8:	6a 01                	push   $0x1
4079aa:	53                   	push   %ebx
4079ab:	68 58 1a 40 00       	push   $0x401a58
4079b0:	ff 15 dc 21 41 00    	call   *0x4121dc
4079b6:	85 c0                	test   %eax,%eax
4079b8:	0f 88 8d 00 00 00    	js     0x407a4b
4079be:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4079c1:	8b 45 e8             	mov    -0x18(%ebp),%eax
4079c4:	8b 38                	mov    (%eax),%edi
4079c6:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4079c9:	51                   	push   %ecx
4079ca:	53                   	push   %ebx
4079cb:	53                   	push   %ebx
4079cc:	ff 75 e0             	push   -0x20(%ebp)
4079cf:	50                   	push   %eax
4079d0:	8b 4f 0c             	mov    0xc(%edi),%ecx
4079d3:	ff 15 20 23 41 00    	call   *0x412320
4079d9:	ff 57 0c             	call   *0xc(%edi)
4079dc:	8b f8                	mov    %eax,%edi
4079de:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
4079e2:	74 3d                	je     0x407a21
4079e4:	ff 75 e4             	push   -0x1c(%ebp)
4079e7:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4079ea:	e8 ea df ff ff       	call   0x4059d9
4079ef:	8b f0                	mov    %eax,%esi
4079f1:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
4079f5:	8b 0e                	mov    (%esi),%ecx
4079f7:	85 c9                	test   %ecx,%ecx
4079f9:	74 04                	je     0x4079ff
4079fb:	f0 ff 41 08          	lock incl 0x8(%ecx)
4079ff:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407a02:	e8 48 df ff ff       	call   0x40594f
407a07:	8b 36                	mov    (%esi),%esi
407a09:	89 75 ec             	mov    %esi,-0x14(%ebp)
407a0c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407a10:	8d 4d dc             	lea    -0x24(%ebp),%ecx
407a13:	e8 37 df ff ff       	call   0x40594f
407a18:	ff 75 e4             	push   -0x1c(%ebp)
407a1b:	ff 15 30 21 41 00    	call   *0x412130
407a21:	85 ff                	test   %edi,%edi
407a23:	0f 88 cb 00 00 00    	js     0x407af4
407a29:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407a2c:	85 c9                	test   %ecx,%ecx
407a2e:	74 13                	je     0x407a43
407a30:	8b 01                	mov    (%ecx),%eax
407a32:	51                   	push   %ecx
407a33:	8b 78 08             	mov    0x8(%eax),%edi
407a36:	8b cf                	mov    %edi,%ecx
407a38:	ff 15 20 23 41 00    	call   *0x412320
407a3e:	ff d7                	call   *%edi
407a40:	89 5d e8             	mov    %ebx,-0x18(%ebp)
407a43:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407a46:	e9 35 ff ff ff       	jmp    0x407980
407a4b:	8b cf                	mov    %edi,%ecx
407a4d:	e9 a5 00 00 00       	jmp    0x407af7
407a52:	89 65 f0             	mov    %esp,-0x10(%ebp)
407a55:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407a58:	85 c9                	test   %ecx,%ecx
407a5a:	74 14                	je     0x407a70
407a5c:	8b 01                	mov    (%ecx),%eax
407a5e:	51                   	push   %ecx
407a5f:	8b 70 08             	mov    0x8(%eax),%esi
407a62:	8b ce                	mov    %esi,%ecx
407a64:	ff 15 20 23 41 00    	call   *0x412320
407a6a:	ff d6                	call   *%esi
407a6c:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
407a70:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
407a74:	8b 4d d8             	mov    -0x28(%ebp),%ecx
407a77:	e8 55 0a 00 00       	call   0x4084d1
407a7c:	8b c8                	mov    %eax,%ecx
407a7e:	e8 08 2a 00 00       	call   0x40a48b
407a83:	8d 78 05             	lea    0x5(%eax),%edi
407a86:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
407a89:	e8 dc 31 00 00       	call   0x40ac6a
407a8e:	8b f0                	mov    %eax,%esi
407a90:	89 75 dc             	mov    %esi,-0x24(%ebp)
407a93:	85 f6                	test   %esi,%esi
407a95:	74 3b                	je     0x407ad2
407a97:	57                   	push   %edi
407a98:	8b 4d d8             	mov    -0x28(%ebp),%ecx
407a9b:	e8 31 0a 00 00       	call   0x4084d1
407aa0:	8b d0                	mov    %eax,%edx
407aa2:	8b ce                	mov    %esi,%ecx
407aa4:	e8 4d 29 00 00       	call   0x40a3f6
407aa9:	57                   	push   %edi
407aaa:	ba 7c 14 40 00       	mov    $0x40147c,%edx
407aaf:	8b ce                	mov    %esi,%ecx
407ab1:	e8 a0 29 00 00       	call   0x40a456
407ab6:	8b ce                	mov    %esi,%ecx
407ab8:	e8 4f 1c 00 00       	call   0x40970c
407abd:	8d 4d dc             	lea    -0x24(%ebp),%ecx
407ac0:	e8 01 31 00 00       	call   0x40abc6
407ac5:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%ebp)
407acc:	b8 8d 79 40 00       	mov    $0x40798d,%eax
407ad1:	c3                   	ret
407ad2:	6a 08                	push   $0x8
407ad4:	ff 15 74 20 41 00    	call   *0x412074
407ada:	e8 15 1d 00 00       	call   0x4097f4
407adf:	eb e4                	jmp    0x407ac5
407ae1:	6a 08                	push   $0x8
407ae3:	ff 15 74 20 41 00    	call   *0x412074
407ae9:	e8 06 1d 00 00       	call   0x4097f4
407aee:	b8 c5 7a 40 00       	mov    $0x407ac5,%eax
407af3:	c3                   	ret
407af4:	8b 4d e0             	mov    -0x20(%ebp),%ecx
407af7:	e8 25 0c 00 00       	call   0x408721
407afc:	cc                   	int3
407afd:	6a 20                	push   $0x20
407aff:	b8 11 fb 40 00       	mov    $0x40fb11,%eax
407b04:	e8 46 78 00 00       	call   0x40f34f
407b09:	8b f2                	mov    %edx,%esi
407b0b:	8b f9                	mov    %ecx,%edi
407b0d:	85 ff                	test   %edi,%edi
407b0f:	0f 84 98 00 00 00    	je     0x407bad
407b15:	85 f6                	test   %esi,%esi
407b17:	0f 84 90 00 00 00    	je     0x407bad
407b1d:	33 db                	xor    %ebx,%ebx
407b1f:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407b22:	8d 45 d4             	lea    -0x2c(%ebp),%eax
407b25:	50                   	push   %eax
407b26:	ff 15 18 21 41 00    	call   *0x412118
407b2c:	56                   	push   %esi
407b2d:	8d 4d e8             	lea    -0x18(%ebp),%ecx
407b30:	e8 a4 de ff ff       	call   0x4059d9
407b35:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407b39:	8b 00                	mov    (%eax),%eax
407b3b:	85 c0                	test   %eax,%eax
407b3d:	74 04                	je     0x407b43
407b3f:	8b 00                	mov    (%eax),%eax
407b41:	eb 02                	jmp    0x407b45
407b43:	8b c3                	mov    %ebx,%eax
407b45:	8b 37                	mov    (%edi),%esi
407b47:	53                   	push   %ebx
407b48:	53                   	push   %ebx
407b49:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
407b4c:	51                   	push   %ecx
407b4d:	53                   	push   %ebx
407b4e:	50                   	push   %eax
407b4f:	57                   	push   %edi
407b50:	8b 4e 10             	mov    0x10(%esi),%ecx
407b53:	ff 15 20 23 41 00    	call   *0x412320
407b59:	ff 56 10             	call   *0x10(%esi)
407b5c:	8b f0                	mov    %eax,%esi
407b5e:	89 75 ec             	mov    %esi,-0x14(%ebp)
407b61:	88 5d fc             	mov    %bl,-0x4(%ebp)
407b64:	8d 4d e8             	lea    -0x18(%ebp),%ecx
407b67:	e8 e3 dd ff ff       	call   0x40594f
407b6c:	8d 45 d4             	lea    -0x2c(%ebp),%eax
407b6f:	50                   	push   %eax
407b70:	85 f6                	test   %esi,%esi
407b72:	79 0a                	jns    0x407b7e
407b74:	ff 15 14 21 41 00    	call   *0x412114
407b7a:	8b c6                	mov    %esi,%eax
407b7c:	eb 34                	jmp    0x407bb2
407b7e:	ff 75 08             	push   0x8(%ebp)
407b81:	ff 15 24 21 41 00    	call   *0x412124
407b87:	85 c0                	test   %eax,%eax
407b89:	78 2f                	js     0x407bba
407b8b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407b8f:	eb 16                	jmp    0x407ba7
407b91:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407b94:	8b 40 04             	mov    0x4(%eax),%eax
407b97:	89 45 ec             	mov    %eax,-0x14(%ebp)
407b9a:	b8 a0 7b 40 00       	mov    $0x407ba0,%eax
407b9f:	c3                   	ret
407ba0:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407ba4:	8b 75 ec             	mov    -0x14(%ebp),%esi
407ba7:	8d 45 d4             	lea    -0x2c(%ebp),%eax
407baa:	50                   	push   %eax
407bab:	eb c7                	jmp    0x407b74
407bad:	b8 08 10 04 80       	mov    $0x80041008,%eax
407bb2:	e8 42 77 00 00       	call   0x40f2f9
407bb7:	c2 04 00             	ret    $0x4
407bba:	8b c8                	mov    %eax,%ecx
407bbc:	e8 60 0b 00 00       	call   0x408721
407bc1:	cc                   	int3
407bc2:	6a 1c                	push   $0x1c
407bc4:	b8 3c fb 40 00       	mov    $0x40fb3c,%eax
407bc9:	e8 81 77 00 00       	call   0x40f34f
407bce:	8b fa                	mov    %edx,%edi
407bd0:	8b d9                	mov    %ecx,%ebx
407bd2:	8d 45 d8             	lea    -0x28(%ebp),%eax
407bd5:	50                   	push   %eax
407bd6:	ff 15 18 21 41 00    	call   *0x412118
407bdc:	33 f6                	xor    %esi,%esi
407bde:	89 75 fc             	mov    %esi,-0x4(%ebp)
407be1:	8b 4d 08             	mov    0x8(%ebp),%ecx
407be4:	ff 15 00 22 41 00    	call   *0x412200
407bea:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407bee:	ff 75 0c             	push   0xc(%ebp)
407bf1:	8b 4d 08             	mov    0x8(%ebp),%ecx
407bf4:	ff 15 2c 22 41 00    	call   *0x41222c
407bfa:	85 db                	test   %ebx,%ebx
407bfc:	74 67                	je     0x407c65
407bfe:	85 ff                	test   %edi,%edi
407c00:	74 63                	je     0x407c65
407c02:	8d 45 d8             	lea    -0x28(%ebp),%eax
407c05:	50                   	push   %eax
407c06:	8b d7                	mov    %edi,%edx
407c08:	8b cb                	mov    %ebx,%ecx
407c0a:	e8 ee fe ff ff       	call   0x407afd
407c0f:	85 c0                	test   %eax,%eax
407c11:	0f 88 92 00 00 00    	js     0x407ca9
407c17:	6a 08                	push   $0x8
407c19:	58                   	pop    %eax
407c1a:	66 3b 45 d8          	cmp    -0x28(%ebp),%ax
407c1e:	75 2e                	jne    0x407c4e
407c20:	8d 45 d8             	lea    -0x28(%ebp),%eax
407c23:	50                   	push   %eax
407c24:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407c27:	e8 0f 08 00 00       	call   0x40843b
407c2c:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
407c30:	8b 00                	mov    (%eax),%eax
407c32:	85 c0                	test   %eax,%eax
407c34:	74 02                	je     0x407c38
407c36:	8b 30                	mov    (%eax),%esi
407c38:	56                   	push   %esi
407c39:	8b 4d 08             	mov    0x8(%ebp),%ecx
407c3c:	ff 15 2c 22 41 00    	call   *0x41222c
407c42:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407c46:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407c49:	e8 01 dd ff ff       	call   0x40594f
407c4e:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407c52:	8d 45 d8             	lea    -0x28(%ebp),%eax
407c55:	50                   	push   %eax
407c56:	ff 15 14 21 41 00    	call   *0x412114
407c5c:	85 c0                	test   %eax,%eax
407c5e:	78 49                	js     0x407ca9
407c60:	33 c0                	xor    %eax,%eax
407c62:	40                   	inc    %eax
407c63:	eb 2c                	jmp    0x407c91
407c65:	b9 08 10 04 80       	mov    $0x80041008,%ecx
407c6a:	eb 3f                	jmp    0x407cab
407c6c:	8b 45 e8             	mov    -0x18(%ebp),%eax
407c6f:	8b 48 04             	mov    0x4(%eax),%ecx
407c72:	e8 93 fc ff ff       	call   0x40790a
407c77:	b8 7d 7c 40 00       	mov    $0x407c7d,%eax
407c7c:	c3                   	ret
407c7d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407c81:	8d 45 d8             	lea    -0x28(%ebp),%eax
407c84:	50                   	push   %eax
407c85:	ff 15 14 21 41 00    	call   *0x412114
407c8b:	85 c0                	test   %eax,%eax
407c8d:	78 1a                	js     0x407ca9
407c8f:	33 c0                	xor    %eax,%eax
407c91:	e8 63 76 00 00       	call   0x40f2f9
407c96:	c2 08 00             	ret    $0x8
407c99:	b9 06 10 04 80       	mov    $0x80041006,%ecx
407c9e:	e8 67 fc ff ff       	call   0x40790a
407ca3:	b8 7d 7c 40 00       	mov    $0x407c7d,%eax
407ca8:	c3                   	ret
407ca9:	8b c8                	mov    %eax,%ecx
407cab:	e8 71 0a 00 00       	call   0x408721
407cb0:	cc                   	int3
407cb1:	6a 18                	push   $0x18
407cb3:	b8 5f fb 40 00       	mov    $0x40fb5f,%eax
407cb8:	e8 92 76 00 00       	call   0x40f34f
407cbd:	8b fa                	mov    %edx,%edi
407cbf:	8b d9                	mov    %ecx,%ebx
407cc1:	8d 45 dc             	lea    -0x24(%ebp),%eax
407cc4:	50                   	push   %eax
407cc5:	ff 15 18 21 41 00    	call   *0x412118
407ccb:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407ccf:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407cd3:	8b 75 08             	mov    0x8(%ebp),%esi
407cd6:	83 26 00             	andl   $0x0,(%esi)
407cd9:	85 db                	test   %ebx,%ebx
407cdb:	74 60                	je     0x407d3d
407cdd:	85 ff                	test   %edi,%edi
407cdf:	74 5c                	je     0x407d3d
407ce1:	8d 45 dc             	lea    -0x24(%ebp),%eax
407ce4:	50                   	push   %eax
407ce5:	8b d7                	mov    %edi,%edx
407ce7:	8b cb                	mov    %ebx,%ecx
407ce9:	e8 0f fe ff ff       	call   0x407afd
407cee:	85 c0                	test   %eax,%eax
407cf0:	78 7f                	js     0x407d71
407cf2:	0f b7 45 dc          	movzwl -0x24(%ebp),%eax
407cf6:	48                   	dec    %eax
407cf7:	83 e8 01             	sub    $0x1,%eax
407cfa:	74 24                	je     0x407d20
407cfc:	83 e8 01             	sub    $0x1,%eax
407cff:	74 14                	je     0x407d15
407d01:	83 e8 0f             	sub    $0xf,%eax
407d04:	74 14                	je     0x407d1a
407d06:	83 e8 01             	sub    $0x1,%eax
407d09:	74 0a                	je     0x407d15
407d0b:	83 e8 03             	sub    $0x3,%eax
407d0e:	74 05                	je     0x407d15
407d10:	83 e8 01             	sub    $0x1,%eax
407d13:	75 11                	jne    0x407d26
407d15:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407d18:	eb 0a                	jmp    0x407d24
407d1a:	0f b7 45 e4          	movzwl -0x1c(%ebp),%eax
407d1e:	eb 04                	jmp    0x407d24
407d20:	0f bf 45 e4          	movswl -0x1c(%ebp),%eax
407d24:	89 06                	mov    %eax,(%esi)
407d26:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407d2a:	8d 45 dc             	lea    -0x24(%ebp),%eax
407d2d:	50                   	push   %eax
407d2e:	ff 15 14 21 41 00    	call   *0x412114
407d34:	85 c0                	test   %eax,%eax
407d36:	78 39                	js     0x407d71
407d38:	33 c0                	xor    %eax,%eax
407d3a:	40                   	inc    %eax
407d3b:	eb 2c                	jmp    0x407d69
407d3d:	b9 08 10 04 80       	mov    $0x80041008,%ecx
407d42:	eb 2f                	jmp    0x407d73
407d44:	8b 45 ec             	mov    -0x14(%ebp),%eax
407d47:	8b 48 04             	mov    0x4(%eax),%ecx
407d4a:	e8 bb fb ff ff       	call   0x40790a
407d4f:	b8 55 7d 40 00       	mov    $0x407d55,%eax
407d54:	c3                   	ret
407d55:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407d59:	8d 45 dc             	lea    -0x24(%ebp),%eax
407d5c:	50                   	push   %eax
407d5d:	ff 15 14 21 41 00    	call   *0x412114
407d63:	85 c0                	test   %eax,%eax
407d65:	78 0a                	js     0x407d71
407d67:	33 c0                	xor    %eax,%eax
407d69:	e8 8b 75 00 00       	call   0x40f2f9
407d6e:	c2 08 00             	ret    $0x8
407d71:	8b c8                	mov    %eax,%ecx
407d73:	e8 a9 09 00 00       	call   0x408721
407d78:	cc                   	int3
407d79:	6a 08                	push   $0x8
407d7b:	b8 83 fb 40 00       	mov    $0x40fb83,%eax
407d80:	e8 ca 75 00 00       	call   0x40f34f
407d85:	8b fa                	mov    %edx,%edi
407d87:	8b d9                	mov    %ecx,%ebx