405607:	e9 06 01 00 00       	jmp    0x405712
40560c:	ff 75 18             	push   0x18(%ebp)
40560f:	8b 75 08             	mov    0x8(%ebp),%esi
405612:	83 c0 04             	add    $0x4,%eax
405615:	ff 71 14             	push   0x14(%ecx)
405618:	33 db                	xor    %ebx,%ebx
40561a:	ff 71 1c             	push   0x1c(%ecx)
40561d:	51                   	push   %ecx
40561e:	50                   	push   %eax
40561f:	ff 75 0c             	push   0xc(%ebp)
405622:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405628:	56                   	push   %esi
405629:	e8 ad 53 00 00       	call   0x40a9db
40562e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405631:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405637:	8b 7d 10             	mov    0x10(%ebp),%edi
40563a:	53                   	push   %ebx
40563b:	57                   	push   %edi
40563c:	e8 a6 f1 ff ff       	call   0x4047e7
405641:	84 c0                	test   %al,%al
405643:	0f 85 a1 00 00 00    	jne    0x4056ea
405649:	8b 45 08             	mov    0x8(%ebp),%eax
40564c:	3b 45 0c             	cmp    0xc(%ebp),%eax
40564f:	0f 84 ac 00 00 00    	je     0x405701
405655:	f6 45 18 40          	testb  $0x40,0x18(%ebp)
405659:	0f 85 a2 00 00 00    	jne    0x405701
40565f:	8b 4d d0             	mov    -0x30(%ebp),%ecx
405662:	81 c9 00 01 00 00    	or     $0x100,%ecx
405668:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40566b:	81 e1 ff df ff ff    	and    $0xffffdfff,%ecx
405671:	53                   	push   %ebx
405672:	ff 75 0c             	push   0xc(%ebp)
405675:	40                   	inc    %eax
405676:	89 4d d0             	mov    %ecx,-0x30(%ebp)
405679:	50                   	push   %eax
40567a:	89 45 08             	mov    %eax,0x8(%ebp)
40567d:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405683:	8d 45 f0             	lea    -0x10(%ebp),%eax
405686:	50                   	push   %eax
405687:	e8 2e 72 01 00       	call   0x41c8ba
40568c:	8b 08                	mov    (%eax),%ecx
40568e:	8b 45 0c             	mov    0xc(%ebp),%eax
405691:	89 4d 08             	mov    %ecx,0x8(%ebp)
405694:	3b c8                	cmp    %eax,%ecx
405696:	74 3e                	je     0x4056d6
405698:	89 45 14             	mov    %eax,0x14(%ebp)
40569b:	53                   	push   %ebx
40569c:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
40569f:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056a5:	57                   	push   %edi
4056a6:	e8 3c f1 ff ff       	call   0x4047e7
4056ab:	84 c0                	test   %al,%al
4056ad:	75 3b                	jne    0x4056ea
4056af:	8b 45 08             	mov    0x8(%ebp),%eax
4056b2:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056b8:	53                   	push   %ebx
4056b9:	ff 75 14             	push   0x14(%ebp)
4056bc:	40                   	inc    %eax
4056bd:	50                   	push   %eax
4056be:	89 45 08             	mov    %eax,0x8(%ebp)
4056c1:	8d 45 f0             	lea    -0x10(%ebp),%eax
4056c4:	50                   	push   %eax
4056c5:	e8 f0 71 01 00       	call   0x41c8ba
4056ca:	8b 08                	mov    (%eax),%ecx
4056cc:	8b 45 0c             	mov    0xc(%ebp),%eax
4056cf:	89 4d 08             	mov    %ecx,0x8(%ebp)
4056d2:	3b c8                	cmp    %eax,%ecx
4056d4:	75 c5                	jne    0x40569b
4056d6:	53                   	push   %ebx
4056d7:	57                   	push   %edi
4056d8:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056de:	89 45 c4             	mov    %eax,-0x3c(%ebp)
4056e1:	e8 01 f1 ff ff       	call   0x4047e7
4056e6:	84 c0                	test   %al,%al
4056e8:	74 17                	je     0x405701
4056ea:	b3 01                	mov    $0x1,%bl
4056ec:	85 ff                	test   %edi,%edi
4056ee:	74 11                	je     0x405701
4056f0:	8b 45 1c             	mov    0x1c(%ebp),%eax
4056f3:	89 07                	mov    %eax,(%edi)
4056f5:	89 77 14             	mov    %esi,0x14(%edi)
4056f8:	3b 77 18             	cmp    0x18(%edi),%esi
4056fb:	0f 95 c0             	setne  %al
4056fe:	88 47 1c             	mov    %al,0x1c(%edi)
405701:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405705:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
40570b:	e8 ea 7e 00 00       	call   0x40d5fa
405710:	8a c3                	mov    %bl,%al
405712:	e8 fc a2 03 00       	call   0x43fa13
405717:	c3                   	ret
405718:	68 84 00 00 00       	push   $0x84
40571d:	b8 72 a3 48 00       	mov    $0x48a372,%eax
405722:	e8 23 a3 03 00       	call   0x43fa4a
405727:	8b 45 14             	mov    0x14(%ebp),%eax
40572a:	8b 08                	mov    (%eax),%ecx
40572c:	85 c9                	test   %ecx,%ecx
40572e:	75 07                	jne    0x405737
405730:	32 c0                	xor    %al,%al
405732:	e9 0a 01 00 00       	jmp    0x405841
405737:	ff 75 18             	push   0x18(%ebp)
40573a:	8b 75 08             	mov    0x8(%ebp),%esi
40573d:	83 c0 04             	add    $0x4,%eax
405740:	ff 71 14             	push   0x14(%ecx)
405743:	33 db                	xor    %ebx,%ebx
405745:	ff 71 1c             	push   0x1c(%ecx)
405748:	51                   	push   %ecx
405749:	50                   	push   %eax
40574a:	ff 75 0c             	push   0xc(%ebp)
40574d:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405753:	56                   	push   %esi
405754:	e8 12 53 00 00       	call   0x40aa6b
405759:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40575c:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405762:	8b 7d 10             	mov    0x10(%ebp),%edi
405765:	53                   	push   %ebx
405766:	57                   	push   %edi
405767:	e8 b7 f1 ff ff       	call   0x404923
40576c:	84 c0                	test   %al,%al
40576e:	0f 85 a5 00 00 00    	jne    0x405819
405774:	8b 45 08             	mov    0x8(%ebp),%eax
405777:	3b 45 0c             	cmp    0xc(%ebp),%eax
40577a:	0f 84 b0 00 00 00    	je     0x405830
405780:	f6 45 18 40          	testb  $0x40,0x18(%ebp)
405784:	0f 85 a6 00 00 00    	jne    0x405830
40578a:	8b 4d d0             	mov    -0x30(%ebp),%ecx
40578d:	83 c0 02             	add    $0x2,%eax
405790:	81 c9 00 01 00 00    	or     $0x100,%ecx
405796:	89 4d d0             	mov    %ecx,-0x30(%ebp)
405799:	81 e1 ff df ff ff    	and    $0xffffdfff,%ecx
40579f:	53                   	push   %ebx
4057a0:	ff 75 0c             	push   0xc(%ebp)
4057a3:	89 45 08             	mov    %eax,0x8(%ebp)
4057a6:	50                   	push   %eax
4057a7:	8d 45 f0             	lea    -0x10(%ebp),%eax
4057aa:	89 4d d0             	mov    %ecx,-0x30(%ebp)
4057ad:	50                   	push   %eax
4057ae:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057b4:	e8 16 73 01 00       	call   0x41cacf
4057b9:	8b 08                	mov    (%eax),%ecx
4057bb:	8b 45 0c             	mov    0xc(%ebp),%eax
4057be:	89 4d 08             	mov    %ecx,0x8(%ebp)
4057c1:	3b c8                	cmp    %eax,%ecx
4057c3:	74 40                	je     0x405805
4057c5:	89 45 14             	mov    %eax,0x14(%ebp)
4057c8:	53                   	push   %ebx
4057c9:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
4057cc:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057d2:	57                   	push   %edi
4057d3:	e8 4b f1 ff ff       	call   0x404923
4057d8:	84 c0                	test   %al,%al
4057da:	75 3d                	jne    0x405819
4057dc:	8b 45 08             	mov    0x8(%ebp),%eax
4057df:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057e5:	53                   	push   %ebx
4057e6:	ff 75 14             	push   0x14(%ebp)
4057e9:	83 c0 02             	add    $0x2,%eax
4057ec:	50                   	push   %eax
4057ed:	89 45 08             	mov    %eax,0x8(%ebp)
4057f0:	8d 45 f0             	lea    -0x10(%ebp),%eax
4057f3:	50                   	push   %eax
4057f4:	e8 d6 72 01 00       	call   0x41cacf
4057f9:	8b 08                	mov    (%eax),%ecx
4057fb:	8b 45 0c             	mov    0xc(%ebp),%eax
4057fe:	89 4d 08             	mov    %ecx,0x8(%ebp)
405801:	3b c8                	cmp    %eax,%ecx
405803:	75 c3                	jne    0x4057c8
405805:	53                   	push   %ebx
405806:	57                   	push   %edi
405807:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
40580d:	89 45 c4             	mov    %eax,-0x3c(%ebp)
405810:	e8 0e f1 ff ff       	call   0x404923
405815:	84 c0                	test   %al,%al
405817:	74 17                	je     0x405830
405819:	b3 01                	mov    $0x1,%bl
40581b:	85 ff                	test   %edi,%edi
40581d:	74 11                	je     0x405830
40581f:	8b 45 1c             	mov    0x1c(%ebp),%eax
405822:	89 07                	mov    %eax,(%edi)
405824:	89 77 14             	mov    %esi,0x14(%edi)
405827:	3b 77 18             	cmp    0x18(%edi),%esi
40582a:	0f 95 c0             	setne  %al
40582d:	88 47 1c             	mov    %al,0x1c(%edi)
405830:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405834:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
40583a:	e8 18 7e 00 00       	call   0x40d657
40583f:	8a c3                	mov    %bl,%al
405841:	e8 cd a1 03 00       	call   0x43fa13
405846:	c3                   	ret
405847:	6a 54                	push   $0x54
405849:	b8 b0 a3 48 00       	mov    $0x48a3b0,%eax
40584e:	e8 f7 a1 03 00       	call   0x43fa4a
405853:	8b f9                	mov    %ecx,%edi
405855:	ff 75 10             	push   0x10(%ebp)
405858:	8d 47 04             	lea    0x4(%edi),%eax
40585b:	ff 75 0c             	push   0xc(%ebp)
40585e:	8d 4d a0             	lea    -0x60(%ebp),%ecx
405861:	ff 75 08             	push   0x8(%ebp)
405864:	50                   	push   %eax
405865:	e8 cf 53 00 00       	call   0x40ac39
40586a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40586e:	8d 4d a0             	lea    -0x60(%ebp),%ecx
405871:	e8 51 22 01 00       	call   0x417ac7
405876:	8b f0                	mov    %eax,%esi
405878:	85 f6                	test   %esi,%esi
40587a:	74 04                	je     0x405880
40587c:	f0 ff 46 20          	lock incl 0x20(%esi)
405880:	8b cf                	mov    %edi,%ecx
405882:	e8 28 76 01 00       	call   0x41ceaf
405887:	89 37                	mov    %esi,(%edi)
405889:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40588d:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405890:	89 45 10             	mov    %eax,0x10(%ebp)
405893:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405897:	8b c8                	mov    %eax,%ecx
405899:	e8 fa 77 01 00       	call   0x41d098
40589e:	e8 70 a1 03 00       	call   0x43fa13
4058a3:	c2 10 00             	ret    $0x10
4058a6:	6a 54                	push   $0x54
4058a8:	b8 eb a3 48 00       	mov    $0x48a3eb,%eax
4058ad:	e8 98 a1 03 00       	call   0x43fa4a
4058b2:	8b f9                	mov    %ecx,%edi
4058b4:	ff 75 10             	push   0x10(%ebp)
4058b7:	8d 47 04             	lea    0x4(%edi),%eax
4058ba:	ff 75 0c             	push   0xc(%ebp)
4058bd:	8d 4d a0             	lea    -0x60(%ebp),%ecx
4058c0:	ff 75 08             	push   0x8(%ebp)
4058c3:	50                   	push   %eax
4058c4:	e8 33 54 00 00       	call   0x40acfc
4058c9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4058cd:	8d 4d a0             	lea    -0x60(%ebp),%ecx
4058d0:	e8 7e 22 01 00       	call   0x417b53
4058d5:	8b f0                	mov    %eax,%esi
4058d7:	85 f6                	test   %esi,%esi
4058d9:	74 04                	je     0x4058df
4058db:	f0 ff 46 20          	lock incl 0x20(%esi)
4058df:	8b cf                	mov    %edi,%ecx
4058e1:	e8 ec 75 01 00       	call   0x41ced2
4058e6:	89 37                	mov    %esi,(%edi)
4058e8:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4058ec:	8d 45 b4             	lea    -0x4c(%ebp),%eax
4058ef:	89 45 10             	mov    %eax,0x10(%ebp)
4058f2:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4058f6:	8b c8                	mov    %eax,%ecx
4058f8:	e8 9b 77 01 00       	call   0x41d098
4058fd:	e8 11 a1 03 00       	call   0x43fa13
405902:	c2 10 00             	ret    $0x10
405905:	6a 0c                	push   $0xc
405907:	b8 06 a4 48 00       	mov    $0x48a406,%eax
40590c:	e8 a4 a1 03 00       	call   0x43fab5
405911:	8b f9                	mov    %ecx,%edi
405913:	89 7d e8             	mov    %edi,-0x18(%ebp)
405916:	8b 0f                	mov    (%edi),%ecx
405918:	8b 5f 04             	mov    0x4(%edi),%ebx
40591b:	2b d9                	sub    %ecx,%ebx
40591d:	c1 fb 03             	sar    $0x3,%ebx
405920:	8b 47 08             	mov    0x8(%edi),%eax
405923:	2b c1                	sub    %ecx,%eax
405925:	c1 f8 03             	sar    $0x3,%eax
405928:	8b 75 08             	mov    0x8(%ebp),%esi
40592b:	3b f0                	cmp    %eax,%esi
40592d:	76 58                	jbe    0x405987
40592f:	81 fe ff ff ff 1f    	cmp    $0x1fffffff,%esi
405935:	77 77                	ja     0x4059ae
405937:	56                   	push   %esi
405938:	8b cf                	mov    %edi,%ecx
40593a:	e8 4a 14 01 00       	call   0x416d89
40593f:	89 45 08             	mov    %eax,0x8(%ebp)
405942:	50                   	push   %eax
405943:	8b cf                	mov    %edi,%ecx
405945:	e8 ad 9a 01 00       	call   0x41f3f7
40594a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40594d:	8d 0c d8             	lea    (%eax,%ebx,8),%ecx
405950:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405954:	ff 75 0c             	push   0xc(%ebp)
405957:	8b c6                	mov    %esi,%eax
405959:	2b c3                	sub    %ebx,%eax
40595b:	50                   	push   %eax
40595c:	51                   	push   %ecx
40595d:	e8 43 11 00 00       	call   0x406aa5
405962:	83 c4 0c             	add    $0xc,%esp
405965:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405968:	53                   	push   %ebx
405969:	ff 77 04             	push   0x4(%edi)
40596c:	ff 37                	push   (%edi)
40596e:	8b cf                	mov    %edi,%ecx
405970:	e8 6f 7c 01 00       	call   0x41d5e4
405975:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405979:	ff 75 08             	push   0x8(%ebp)
40597c:	56                   	push   %esi
40597d:	53                   	push   %ebx
40597e:	8b cf                	mov    %edi,%ecx
405980:	e8 bb 16 01 00       	call   0x417040
405985:	eb 1f                	jmp    0x4059a6
405987:	3b f3                	cmp    %ebx,%esi
405989:	76 13                	jbe    0x40599e
40598b:	ff 75 0c             	push   0xc(%ebp)
40598e:	2b f3                	sub    %ebx,%esi
405990:	56                   	push   %esi
405991:	ff 77 04             	push   0x4(%edi)
405994:	e8 0c 11 00 00       	call   0x406aa5
405999:	83 c4 0c             	add    $0xc,%esp
40599c:	eb 05                	jmp    0x4059a3
40599e:	74 06                	je     0x4059a6
4059a0:	8d 04 f1             	lea    (%ecx,%esi,8),%eax
4059a3:	89 47 04             	mov    %eax,0x4(%edi)
4059a6:	e8 68 a0 03 00       	call   0x43fa13
4059ab:	c2 08 00             	ret    $0x8
4059ae:	e8 b1 7d 01 00       	call   0x41d764
4059b3:	ff 75 08             	push   0x8(%ebp)
4059b6:	ff 75 ec             	push   -0x14(%ebp)
4059b9:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4059bc:	e8 5e 3d 01 00       	call   0x41971f
4059c1:	8b c8                	mov    %eax,%ecx
4059c3:	e8 a6 a2 01 00       	call   0x41fc6e
4059c8:	6a 00                	push   $0x0
4059ca:	6a 00                	push   $0x0
4059cc:	e8 f1 e7 03 00       	call   0x4441c2
4059d1:	cc                   	int3
4059d2:	6a 0c                	push   $0xc
4059d4:	b8 21 a4 48 00       	mov    $0x48a421,%eax
4059d9:	e8 d7 a0 03 00       	call   0x43fab5
4059de:	8b f9                	mov    %ecx,%edi
4059e0:	89 7d e8             	mov    %edi,-0x18(%ebp)
4059e3:	8b 0f                	mov    (%edi),%ecx
4059e5:	8b 5f 04             	mov    0x4(%edi),%ebx
4059e8:	2b d9                	sub    %ecx,%ebx
4059ea:	c1 fb 03             	sar    $0x3,%ebx
4059ed:	8b 47 08             	mov    0x8(%edi),%eax
4059f0:	2b c1                	sub    %ecx,%eax
4059f2:	c1 f8 03             	sar    $0x3,%eax
4059f5:	8b 75 08             	mov    0x8(%ebp),%esi
4059f8:	3b f0                	cmp    %eax,%esi
4059fa:	76 57                	jbe    0x405a53
4059fc:	81 fe ff ff ff 1f    	cmp    $0x1fffffff,%esi
405a02:	77 76                	ja     0x405a7a
405a04:	56                   	push   %esi
405a05:	8b cf                	mov    %edi,%ecx
405a07:	e8 2b 13 01 00       	call   0x416d37
405a0c:	89 45 08             	mov    %eax,0x8(%ebp)
405a0f:	50                   	push   %eax
405a10:	8b cf                	mov    %edi,%ecx
405a12:	e8 9e 99 01 00       	call   0x41f3b5
405a17:	89 45 ec             	mov    %eax,-0x14(%ebp)
405a1a:	8d 0c d8             	lea    (%eax,%ebx,8),%ecx
405a1d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405a21:	ff 75 0c             	push   0xc(%ebp)
405a24:	8b c6                	mov    %esi,%eax
405a26:	2b c3                	sub    %ebx,%eax
405a28:	50                   	push   %eax
405a29:	51                   	push   %ecx