407794:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
407798:	53                   	push   %ebx
407799:	89 55 fc             	mov    %edx,-0x4(%ebp)
40779c:	8b d9                	mov    %ecx,%ebx
40779e:	75 0a                	jne    0x4077aa
4077a0:	b8 08 10 04 80       	mov    $0x80041008,%eax
4077a5:	e9 f5 00 00 00       	jmp    0x40789f
4077aa:	56                   	push   %esi
4077ab:	57                   	push   %edi
4077ac:	6a 1c                	push   $0x1c
4077ae:	5f                   	pop    %edi
4077af:	57                   	push   %edi
4077b0:	ff 15 d8 21 41 00    	call   *0x4121d8
4077b6:	8b f0                	mov    %eax,%esi
4077b8:	89 75 f8             	mov    %esi,-0x8(%ebp)
4077bb:	85 f6                	test   %esi,%esi
4077bd:	0f 84 e9 00 00 00    	je     0x4078ac
4077c3:	c6 00 00             	movb   $0x0,(%eax)
4077c6:	40                   	inc    %eax
4077c7:	83 ef 01             	sub    $0x1,%edi
4077ca:	75 f7                	jne    0x4077c3
4077cc:	85 db                	test   %ebx,%ebx
4077ce:	74 31                	je     0x407801
4077d0:	8b cb                	mov    %ebx,%ecx
4077d2:	e8 b4 2c 00 00       	call   0x40a48b
4077d7:	8b f8                	mov    %eax,%edi
4077d9:	8d 0c 7d 02 00 00 00 	lea    0x2(,%edi,2),%ecx
4077e0:	51                   	push   %ecx
4077e1:	ff 15 d8 21 41 00    	call   *0x4121d8
4077e7:	89 06                	mov    %eax,(%esi)
4077e9:	85 c0                	test   %eax,%eax
4077eb:	0f 84 b3 00 00 00    	je     0x4078a4
4077f1:	8d 47 01             	lea    0x1(%edi),%eax
4077f4:	89 7e 04             	mov    %edi,0x4(%esi)
4077f7:	8b 0e                	mov    (%esi),%ecx
4077f9:	8b d3                	mov    %ebx,%edx
4077fb:	50                   	push   %eax
4077fc:	e8 f5 2b 00 00       	call   0x40a3f6
407801:	8b 7d 08             	mov    0x8(%ebp),%edi
407804:	85 ff                	test   %edi,%edi
407806:	74 43                	je     0x40784b
407808:	8b cf                	mov    %edi,%ecx
40780a:	e8 7c 2c 00 00       	call   0x40a48b
40780f:	8b d8                	mov    %eax,%ebx
407811:	8d 43 01             	lea    0x1(%ebx),%eax
407814:	3b c3                	cmp    %ebx,%eax
407816:	0f 82 88 00 00 00    	jb     0x4078a4
40781c:	6a 02                	push   $0x2
40781e:	59                   	pop    %ecx
40781f:	f7 e1                	mul    %ecx
407821:	85 d2                	test   %edx,%edx
407823:	77 7f                	ja     0x4078a4
407825:	72 05                	jb     0x40782c
407827:	83 f8 ff             	cmp    $0xffffffff,%eax
40782a:	77 78                	ja     0x4078a4
40782c:	50                   	push   %eax
40782d:	ff 15 d8 21 41 00    	call   *0x4121d8
407833:	89 46 08             	mov    %eax,0x8(%esi)
407836:	85 c0                	test   %eax,%eax
407838:	74 6a                	je     0x4078a4
40783a:	8d 43 01             	lea    0x1(%ebx),%eax
40783d:	89 5e 0c             	mov    %ebx,0xc(%esi)
407840:	8b 4e 08             	mov    0x8(%esi),%ecx
407843:	8b d7                	mov    %edi,%edx
407845:	50                   	push   %eax
407846:	e8 ab 2b 00 00       	call   0x40a3f6
40784b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40784e:	85 c0                	test   %eax,%eax
407850:	74 3e                	je     0x407890
407852:	8b c8                	mov    %eax,%ecx
407854:	e8 32 2c 00 00       	call   0x40a48b
407859:	8b f8                	mov    %eax,%edi
40785b:	8d 5f 01             	lea    0x1(%edi),%ebx
40785e:	3b df                	cmp    %edi,%ebx
407860:	72 42                	jb     0x4078a4
407862:	6a 02                	push   $0x2
407864:	8b c3                	mov    %ebx,%eax
407866:	59                   	pop    %ecx
407867:	f7 e1                	mul    %ecx
407869:	85 d2                	test   %edx,%edx
40786b:	77 37                	ja     0x4078a4
40786d:	72 05                	jb     0x407874
40786f:	83 f8 ff             	cmp    $0xffffffff,%eax
407872:	77 30                	ja     0x4078a4
407874:	50                   	push   %eax
407875:	ff 15 d8 21 41 00    	call   *0x4121d8
40787b:	89 46 10             	mov    %eax,0x10(%esi)
40787e:	85 c0                	test   %eax,%eax
407880:	74 22                	je     0x4078a4
407882:	8b 55 fc             	mov    -0x4(%ebp),%edx
407885:	8b c8                	mov    %eax,%ecx
407887:	53                   	push   %ebx
407888:	89 7e 14             	mov    %edi,0x14(%esi)
40788b:	e8 66 2b 00 00       	call   0x40a3f6
407890:	6a 02                	push   $0x2
407892:	58                   	pop    %eax
407893:	89 46 18             	mov    %eax,0x18(%esi)
407896:	8b 45 0c             	mov    0xc(%ebp),%eax
407899:	89 30                	mov    %esi,(%eax)
40789b:	33 c0                	xor    %eax,%eax
40789d:	5f                   	pop    %edi
40789e:	5e                   	pop    %esi
40789f:	5b                   	pop    %ebx
4078a0:	c9                   	leave
4078a1:	c2 08 00             	ret    $0x8
4078a4:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4078a7:	e8 07 00 00 00       	call   0x4078b3
4078ac:	b8 06 10 04 80       	mov    $0x80041006,%eax
4078b1:	eb ea                	jmp    0x40789d
4078b3:	8b ff                	mov    %edi,%edi
4078b5:	56                   	push   %esi
4078b6:	8b f1                	mov    %ecx,%esi
4078b8:	8b 06                	mov    (%esi),%eax
4078ba:	85 c0                	test   %eax,%eax
4078bc:	74 4a                	je     0x407908
4078be:	8b 08                	mov    (%eax),%ecx
4078c0:	57                   	push   %edi
4078c1:	33 ff                	xor    %edi,%edi
4078c3:	85 c9                	test   %ecx,%ecx
4078c5:	74 0d                	je     0x4078d4
4078c7:	51                   	push   %ecx
4078c8:	ff 15 d4 21 41 00    	call   *0x4121d4
4078ce:	8b 06                	mov    (%esi),%eax
4078d0:	89 38                	mov    %edi,(%eax)
4078d2:	8b 06                	mov    (%esi),%eax
4078d4:	8b 48 10             	mov    0x10(%eax),%ecx
4078d7:	85 c9                	test   %ecx,%ecx
4078d9:	74 0e                	je     0x4078e9
4078db:	51                   	push   %ecx
4078dc:	ff 15 d4 21 41 00    	call   *0x4121d4
4078e2:	8b 06                	mov    (%esi),%eax
4078e4:	89 78 10             	mov    %edi,0x10(%eax)
4078e7:	8b 06                	mov    (%esi),%eax
4078e9:	8b 48 08             	mov    0x8(%eax),%ecx
4078ec:	85 c9                	test   %ecx,%ecx
4078ee:	74 0e                	je     0x4078fe
4078f0:	51                   	push   %ecx
4078f1:	ff 15 d4 21 41 00    	call   *0x4121d4
4078f7:	8b 06                	mov    (%esi),%eax
4078f9:	89 78 08             	mov    %edi,0x8(%eax)
4078fc:	8b 06                	mov    (%esi),%eax
4078fe:	50                   	push   %eax
4078ff:	ff 15 d4 21 41 00    	call   *0x4121d4
407905:	89 3e                	mov    %edi,(%esi)
407907:	5f                   	pop    %edi
407908:	5e                   	pop    %esi
407909:	c3                   	ret
40790a:	6a 1c                	push   $0x1c
40790c:	b8 ee fa 40 00       	mov    $0x40faee,%eax
407911:	e8 39 7a 00 00       	call   0x40f34f
407916:	8b f9                	mov    %ecx,%edi
407918:	89 7d e0             	mov    %edi,-0x20(%ebp)
40791b:	33 db                	xor    %ebx,%ebx
40791d:	89 5d e8             	mov    %ebx,-0x18(%ebp)
407920:	8b f3                	mov    %ebx,%esi
407922:	89 75 ec             	mov    %esi,-0x14(%ebp)
407925:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407928:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40792c:	81 ff 05 00 07 80    	cmp    $0x80070005,%edi
407932:	75 08                	jne    0x40793c
407934:	bf 2e 05 00 00       	mov    $0x52e,%edi
407939:	89 7d e0             	mov    %edi,-0x20(%ebp)
40793c:	81 ff 54 01 04 80    	cmp    $0x80040154,%edi
407942:	75 5b                	jne    0x40799f
407944:	b9 80 15 00 00       	mov    $0x1580,%ecx
407949:	e8 03 21 00 00       	call   0x409a51
40794e:	50                   	push   %eax
40794f:	8d 4d e0             	lea    -0x20(%ebp),%ecx
407952:	e8 82 e0 ff ff       	call   0x4059d9
407957:	8b f0                	mov    %eax,%esi
407959:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40795d:	8b 0e                	mov    (%esi),%ecx
40795f:	85 c9                	test   %ecx,%ecx
407961:	74 04                	je     0x407967
407963:	f0 ff 41 08          	lock incl 0x8(%ecx)
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)