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
405a2a:	e8 3a 10 00 00       	call   0x406a69
405a2f:	57                   	push   %edi
405a30:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405a33:	53                   	push   %ebx
405a34:	ff 77 04             	push   0x4(%edi)
405a37:	ff 37                	push   (%edi)
405a39:	e8 b4 0c 00 00       	call   0x4066f2
405a3e:	83 c4 1c             	add    $0x1c,%esp
405a41:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405a45:	ff 75 08             	push   0x8(%ebp)
405a48:	56                   	push   %esi
405a49:	53                   	push   %ebx
405a4a:	8b cf                	mov    %edi,%ecx
405a4c:	e8 7d 15 01 00       	call   0x416fce
405a51:	eb 1f                	jmp    0x405a72
405a53:	3b f3                	cmp    %ebx,%esi
405a55:	76 13                	jbe    0x405a6a
405a57:	ff 75 0c             	push   0xc(%ebp)
405a5a:	2b f3                	sub    %ebx,%esi
405a5c:	56                   	push   %esi
405a5d:	ff 77 04             	push   0x4(%edi)
405a60:	e8 04 10 00 00       	call   0x406a69
405a65:	83 c4 0c             	add    $0xc,%esp
405a68:	eb 05                	jmp    0x405a6f
405a6a:	74 06                	je     0x405a72
405a6c:	8d 04 f1             	lea    (%ecx,%esi,8),%eax
405a6f:	89 47 04             	mov    %eax,0x4(%edi)
405a72:	e8 9c 9f 03 00       	call   0x43fa13
405a77:	c2 08 00             	ret    $0x8
405a7a:	e8 cf 7c 01 00       	call   0x41d74e
405a7f:	ff 75 08             	push   0x8(%ebp)
405a82:	ff 75 ec             	push   -0x14(%ebp)
405a85:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405a88:	e8 8c 3c 01 00       	call   0x419719
405a8d:	8b c8                	mov    %eax,%ecx
405a8f:	e8 aa a1 01 00       	call   0x41fc3e
405a94:	6a 00                	push   $0x0
405a96:	6a 00                	push   $0x0
405a98:	e8 25 e7 03 00       	call   0x4441c2
405a9d:	cc                   	int3
405a9e:	6a 0c                	push   $0xc
405aa0:	b8 3c a4 48 00       	mov    $0x48a43c,%eax
405aa5:	e8 0b a0 03 00       	call   0x43fab5
405aaa:	8b f9                	mov    %ecx,%edi
405aac:	89 7d e8             	mov    %edi,-0x18(%ebp)
405aaf:	8b 47 04             	mov    0x4(%edi),%eax
405ab2:	2b 07                	sub    (%edi),%eax
405ab4:	99                   	cltd
405ab5:	6a 0c                	push   $0xc
405ab7:	59                   	pop    %ecx
405ab8:	f7 f9                	idiv   %ecx
405aba:	8b d8                	mov    %eax,%ebx
405abc:	8b 47 08             	mov    0x8(%edi),%eax
405abf:	2b 07                	sub    (%edi),%eax
405ac1:	99                   	cltd
405ac2:	f7 f9                	idiv   %ecx
405ac4:	8b 75 08             	mov    0x8(%ebp),%esi
405ac7:	3b f0                	cmp    %eax,%esi
405ac9:	76 59                	jbe    0x405b24
405acb:	81 fe 55 55 55 15    	cmp    $0x15555555,%esi
405ad1:	77 7a                	ja     0x405b4d
405ad3:	56                   	push   %esi
405ad4:	8b cf                	mov    %edi,%ecx
405ad6:	e8 56 13 01 00       	call   0x416e31
405adb:	89 45 08             	mov    %eax,0x8(%ebp)
405ade:	50                   	push   %eax
405adf:	8b cf                	mov    %edi,%ecx
405ae1:	e8 b0 99 01 00       	call   0x41f496
405ae6:	89 45 ec             	mov    %eax,-0x14(%ebp)
405ae9:	6b cb 0c             	imul   $0xc,%ebx,%ecx
405aec:	03 c8                	add    %eax,%ecx
405aee:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405af2:	ff 75 0c             	push   0xc(%ebp)
405af5:	8b c6                	mov    %esi,%eax
405af7:	2b c3                	sub    %ebx,%eax
405af9:	50                   	push   %eax
405afa:	51                   	push   %ecx
405afb:	e8 ff 0f 00 00       	call   0x406aff
405b00:	57                   	push   %edi
405b01:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405b04:	53                   	push   %ebx
405b05:	ff 77 04             	push   0x4(%edi)
405b08:	ff 37                	push   (%edi)
405b0a:	e8 7b 0c 00 00       	call   0x40678a
405b0f:	83 c4 1c             	add    $0x1c,%esp
405b12:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405b16:	ff 75 08             	push   0x8(%ebp)
405b19:	56                   	push   %esi
405b1a:	53                   	push   %ebx
405b1b:	8b cf                	mov    %edi,%ecx
405b1d:	e8 32 16 01 00       	call   0x417154
405b22:	eb 21                	jmp    0x405b45
405b24:	3b f3                	cmp    %ebx,%esi
405b26:	76 13                	jbe    0x405b3b
405b28:	ff 75 0c             	push   0xc(%ebp)
405b2b:	2b f3                	sub    %ebx,%esi
405b2d:	56                   	push   %esi
405b2e:	ff 77 04             	push   0x4(%edi)
405b31:	e8 c9 0f 00 00       	call   0x406aff
405b36:	83 c4 0c             	add    $0xc,%esp
405b39:	eb 07                	jmp    0x405b42
405b3b:	74 08                	je     0x405b45
405b3d:	6b c6 0c             	imul   $0xc,%esi,%eax
405b40:	03 07                	add    (%edi),%eax
405b42:	89 47 04             	mov    %eax,0x4(%edi)
405b45:	e8 c9 9e 03 00       	call   0x43fa13
405b4a:	c2 08 00             	ret    $0x8
405b4d:	e8 49 7c 01 00       	call   0x41d79b
405b52:	ff 75 08             	push   0x8(%ebp)
405b55:	ff 75 ec             	push   -0x14(%ebp)
405b58:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405b5b:	e8 c8 3b 01 00       	call   0x419728
405b60:	8b c8                	mov    %eax,%ecx
405b62:	e8 63 a1 01 00       	call   0x41fcca
405b67:	6a 00                	push   $0x0
405b69:	6a 00                	push   $0x0
405b6b:	e8 52 e6 03 00       	call   0x4441c2
405b70:	cc                   	int3
405b71:	6a 0c                	push   $0xc
405b73:	b8 57 a4 48 00       	mov    $0x48a457,%eax
405b78:	e8 38 9f 03 00       	call   0x43fab5
405b7d:	8b f9                	mov    %ecx,%edi
405b7f:	89 7d e8             	mov    %edi,-0x18(%ebp)
405b82:	8b 0f                	mov    (%edi),%ecx
405b84:	8b 5f 04             	mov    0x4(%edi),%ebx
405b87:	2b d9                	sub    %ecx,%ebx
405b89:	c1 fb 03             	sar    $0x3,%ebx
405b8c:	8b 47 08             	mov    0x8(%edi),%eax
405b8f:	2b c1                	sub    %ecx,%eax
405b91:	c1 f8 03             	sar    $0x3,%eax
405b94:	8b 75 08             	mov    0x8(%ebp),%esi
405b97:	3b f0                	cmp    %eax,%esi
405b99:	76 58                	jbe    0x405bf3
405b9b:	81 fe ff ff ff 1f    	cmp    $0x1fffffff,%esi
405ba1:	77 77                	ja     0x405c1a
405ba3:	56                   	push   %esi
405ba4:	8b cf                	mov    %edi,%ecx
405ba6:	e8 b5 11 01 00       	call   0x416d60
405bab:	89 45 08             	mov    %eax,0x8(%ebp)
405bae:	50                   	push   %eax
405baf:	8b cf                	mov    %edi,%ecx
405bb1:	e8 20 98 01 00       	call   0x41f3d6
405bb6:	89 45 ec             	mov    %eax,-0x14(%ebp)
405bb9:	8d 0c d8             	lea    (%eax,%ebx,8),%ecx
405bbc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405bc0:	ff 75 0c             	push   0xc(%ebp)
405bc3:	8b c6                	mov    %esi,%eax
405bc5:	2b c3                	sub    %ebx,%eax
405bc7:	50                   	push   %eax
405bc8:	51                   	push   %ecx
405bc9:	e8 b9 0e 00 00       	call   0x406a87
405bce:	83 c4 0c             	add    $0xc,%esp
405bd1:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405bd4:	53                   	push   %ebx
405bd5:	ff 77 04             	push   0x4(%edi)
405bd8:	ff 37                	push   (%edi)
405bda:	8b cf                	mov    %edi,%ecx
405bdc:	e8 e5 79 01 00       	call   0x41d5c6
405be1:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405be5:	ff 75 08             	push   0x8(%ebp)
405be8:	56                   	push   %esi
405be9:	53                   	push   %ebx
405bea:	8b cf                	mov    %edi,%ecx
405bec:	e8 16 14 01 00       	call   0x417007
405bf1:	eb 1f                	jmp    0x405c12
405bf3:	3b f3                	cmp    %ebx,%esi
405bf5:	76 13                	jbe    0x405c0a
405bf7:	ff 75 0c             	push   0xc(%ebp)
405bfa:	2b f3                	sub    %ebx,%esi
405bfc:	56                   	push   %esi
405bfd:	ff 77 04             	push   0x4(%edi)
405c00:	e8 82 0e 00 00       	call   0x406a87
405c05:	83 c4 0c             	add    $0xc,%esp
405c08:	eb 05                	jmp    0x405c0f
405c0a:	74 06                	je     0x405c12