40c5e8:	8d 4a 01             	lea    0x1(%edx),%ecx
40c5eb:	8b c2                	mov    %edx,%eax
40c5ed:	f0 0f b1 0f          	lock cmpxchg %ecx,(%edi)
40c5f1:	3b c2                	cmp    %edx,%eax
40c5f3:	74 06                	je     0x40c5fb
40c5f5:	8b 17                	mov    (%edi),%edx
40c5f7:	3b d6                	cmp    %esi,%edx
40c5f9:	75 ed                	jne    0x40c5e8
40c5fb:	3b d6                	cmp    %esi,%edx
40c5fd:	74 03                	je     0x40c602
40c5ff:	8d 72 01             	lea    0x1(%edx),%esi
40c602:	5f                   	pop    %edi
40c603:	8b c6                	mov    %esi,%eax
40c605:	5e                   	pop    %esi
40c606:	5d                   	pop    %ebp
40c607:	c2 04 00             	ret    $0x4
40c60a:	8b 01                	mov    (%ecx),%eax
40c60c:	3b 02                	cmp    (%edx),%eax
40c60e:	75 1c                	jne    0x40c62c
40c610:	8b 41 04             	mov    0x4(%ecx),%eax
40c613:	3b 42 04             	cmp    0x4(%edx),%eax
40c616:	75 14                	jne    0x40c62c
40c618:	8b 41 08             	mov    0x8(%ecx),%eax
40c61b:	3b 42 08             	cmp    0x8(%edx),%eax
40c61e:	75 0c                	jne    0x40c62c
40c620:	8b 41 0c             	mov    0xc(%ecx),%eax
40c623:	3b 42 0c             	cmp    0xc(%edx),%eax
40c626:	75 04                	jne    0x40c62c
40c628:	33 c0                	xor    %eax,%eax
40c62a:	40                   	inc    %eax
40c62b:	c3                   	ret
40c62c:	33 c0                	xor    %eax,%eax
40c62e:	c3                   	ret
40c62f:	8b ff                	mov    %edi,%edi
40c631:	55                   	push   %ebp
40c632:	8b ec                	mov    %esp,%ebp
40c634:	6a ff                	push   $0xffffffff
40c636:	68 6e e2 41 00       	push   $0x41e26e
40c63b:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40c641:	50                   	push   %eax
40c642:	56                   	push   %esi
40c643:	a1 08 85 43 00       	mov    0x438508,%eax
40c648:	33 c5                	xor    %ebp,%eax
40c64a:	50                   	push   %eax
40c64b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c64e:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40c654:	8b 09                	mov    (%ecx),%ecx
40c656:	85 c9                	test   %ecx,%ecx
40c658:	74 17                	je     0x40c671
40c65a:	8b 01                	mov    (%ecx),%eax
40c65c:	51                   	push   %ecx
40c65d:	8b 70 08             	mov    0x8(%eax),%esi
40c660:	81 fe 80 c6 40 00    	cmp    $0x40c680,%esi
40c666:	0f 85 0f 3d 01 00    	jne    0x42037b
40c66c:	e8 0f 00 00 00       	call   0x40c680
40c671:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40c674:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c67b:	59                   	pop    %ecx
40c67c:	5e                   	pop    %esi
40c67d:	c9                   	leave
40c67e:	c3                   	ret
40c67f:	cc                   	int3
40c680:	6a 04                	push   $0x4
40c682:	b8 fc e2 41 00       	mov    $0x41e2fc,%eax
40c687:	e8 82 e7 00 00       	call   0x41ae0e
40c68c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c68f:	8d 4b 04             	lea    0x4(%ebx),%ecx
40c692:	e8 1b f7 00 00       	call   0x41bdb2
40c697:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c69a:	85 c0                	test   %eax,%eax
40c69c:	75 4c                	jne    0x40c6ea
40c69e:	8b 3d 6c 8a 43 00    	mov    0x438a6c,%edi
40c6a4:	8b 17                	mov    (%edi),%edx
40c6a6:	8b 72 04             	mov    0x4(%edx),%esi
40c6a9:	8b ce                	mov    %esi,%ecx
40c6ab:	ff 15 20 a5 43 00    	call   *0x43a520
40c6b1:	8b cf                	mov    %edi,%ecx
40c6b3:	ff d6                	call   *%esi
40c6b5:	85 db                	test   %ebx,%ebx
40c6b7:	74 13                	je     0x40c6cc
40c6b9:	8b 03                	mov    (%ebx),%eax
40c6bb:	6a 01                	push   $0x1
40c6bd:	8b 70 10             	mov    0x10(%eax),%esi
40c6c0:	8b ce                	mov    %esi,%ecx
40c6c2:	ff 15 20 a5 43 00    	call   *0x43a520
40c6c8:	8b cb                	mov    %ebx,%ecx
40c6ca:	ff d6                	call   *%esi
40c6cc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c6d0:	8b 3d 6c 8a 43 00    	mov    0x438a6c,%edi
40c6d6:	8b 07                	mov    (%edi),%eax
40c6d8:	8b 70 08             	mov    0x8(%eax),%esi
40c6db:	8b ce                	mov    %esi,%ecx
40c6dd:	ff 15 20 a5 43 00    	call   *0x43a520
40c6e3:	8b cf                	mov    %edi,%ecx
40c6e5:	ff d6                	call   *%esi
40c6e7:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c6ea:	e8 ed e6 00 00       	call   0x41addc
40c6ef:	c2 04 00             	ret    $0x4
40c6f2:	8b ff                	mov    %edi,%edi
40c6f4:	55                   	push   %ebp
40c6f5:	8b ec                	mov    %esp,%ebp
40c6f7:	8b 45 08             	mov    0x8(%ebp),%eax
40c6fa:	56                   	push   %esi
40c6fb:	8b f1                	mov    %ecx,%esi
40c6fd:	89 46 04             	mov    %eax,0x4(%esi)
40c700:	8b 45 0c             	mov    0xc(%ebp),%eax
40c703:	89 46 08             	mov    %eax,0x8(%esi)
40c706:	8b 45 10             	mov    0x10(%ebp),%eax
40c709:	89 46 14             	mov    %eax,0x14(%esi)
40c70c:	8b 45 18             	mov    0x18(%ebp),%eax
40c70f:	89 46 1c             	mov    %eax,0x1c(%esi)
40c712:	8b 45 14             	mov    0x14(%ebp),%eax
40c715:	c7 06 f4 10 40 00    	movl   $0x4010f4,(%esi)
40c71b:	89 46 20             	mov    %eax,0x20(%esi)
40c71e:	e8 07 00 00 00       	call   0x40c72a
40c723:	8b c6                	mov    %esi,%eax
40c725:	5e                   	pop    %esi
40c726:	5d                   	pop    %ebp
40c727:	c2 14 00             	ret    $0x14
40c72a:	6a 0c                	push   $0xc
40c72c:	b8 1f e3 41 00       	mov    $0x41e31f,%eax
40c731:	e8 d8 e6 00 00       	call   0x41ae0e
40c736:	8b d9                	mov    %ecx,%ebx
40c738:	8b 4b 14             	mov    0x14(%ebx),%ecx
40c73b:	33 ff                	xor    %edi,%edi
40c73d:	89 7b 10             	mov    %edi,0x10(%ebx)
40c740:	e8 7e 00 00 00       	call   0x40c7c3
40c745:	8b 53 20             	mov    0x20(%ebx),%edx
40c748:	0f af d0             	imul   %eax,%edx
40c74b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c74e:	89 43 0c             	mov    %eax,0xc(%ebx)
40c751:	89 53 18             	mov    %edx,0x18(%ebx)
40c754:	85 c0                	test   %eax,%eax
40c756:	0f 84 2e 3c 01 00    	je     0x42038a
40c75c:	8b 35 3c 1a 40 00    	mov    0x401a3c,%esi
40c762:	33 c9                	xor    %ecx,%ecx
40c764:	6a 10                	push   $0x10
40c766:	5a                   	pop    %edx
40c767:	f7 e2                	mul    %edx
40c769:	0f 90 c1             	seto   %cl
40c76c:	f7 d9                	neg    %ecx
40c76e:	0b c8                	or     %eax,%ecx
40c770:	33 c0                	xor    %eax,%eax
40c772:	83 c1 04             	add    $0x4,%ecx
40c775:	0f 92 c0             	setb   %al
40c778:	f7 d8                	neg    %eax
40c77a:	0b c1                	or     %ecx,%eax
40c77c:	8b ce                	mov    %esi,%ecx
40c77e:	50                   	push   %eax
40c77f:	ff 15 20 a5 43 00    	call   *0x43a520
40c785:	ff d6                	call   *%esi
40c787:	8b c8                	mov    %eax,%ecx
40c789:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40c78c:	89 7d fc             	mov    %edi,-0x4(%ebp)
40c78f:	85 c9                	test   %ecx,%ecx
40c791:	74 1b                	je     0x40c7ae
40c793:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c796:	8d 79 04             	lea    0x4(%ecx),%edi
40c799:	68 00 50 42 00       	push   $0x425000
40c79e:	68 90 99 41 00       	push   $0x419990
40c7a3:	50                   	push   %eax
40c7a4:	6a 10                	push   $0x10
40c7a6:	57                   	push   %edi
40c7a7:	89 01                	mov    %eax,(%ecx)
40c7a9:	e8 c2 e5 00 00       	call   0x41ad70
40c7ae:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40c7b2:	89 7b 24             	mov    %edi,0x24(%ebx)
40c7b5:	85 ff                	test   %edi,%edi
40c7b7:	0f 84 de 3b 01 00    	je     0x42039b
40c7bd:	e8 1a e6 00 00       	call   0x41addc
40c7c2:	c3                   	ret
40c7c3:	33 c0                	xor    %eax,%eax
40c7c5:	8b 90 90 60 40 00    	mov    0x406090(%eax),%edx
40c7cb:	85 d2                	test   %edx,%edx
40c7cd:	74 0c                	je     0x40c7db
40c7cf:	3b d1                	cmp    %ecx,%edx
40c7d1:	73 0b                	jae    0x40c7de
40c7d3:	83 c0 04             	add    $0x4,%eax
40c7d6:	83 f8 68             	cmp    $0x68,%eax
40c7d9:	72 ea                	jb     0x40c7c5
40c7db:	8b c1                	mov    %ecx,%eax
40c7dd:	c3                   	ret
40c7de:	8b c2                	mov    %edx,%eax
40c7e0:	c3                   	ret
40c7e1:	cc                   	int3
40c7e2:	cc                   	int3
40c7e3:	cc                   	int3
40c7e4:	cc                   	int3
40c7e5:	cc                   	int3
40c7e6:	cc                   	int3
40c7e7:	cc                   	int3
40c7e8:	cc                   	int3
40c7e9:	cc                   	int3
40c7ea:	cc                   	int3
40c7eb:	cc                   	int3
40c7ec:	cc                   	int3
40c7ed:	cc                   	int3
40c7ee:	cc                   	int3
40c7ef:	cc                   	int3
40c7f0:	8b ff                	mov    %edi,%edi
40c7f2:	55                   	push   %ebp
40c7f3:	8b ec                	mov    %esp,%ebp
40c7f5:	51                   	push   %ecx
40c7f6:	51                   	push   %ecx
40c7f7:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c7fa:	53                   	push   %ebx
40c7fb:	56                   	push   %esi
40c7fc:	57                   	push   %edi
40c7fd:	85 c9                	test   %ecx,%ecx
40c7ff:	0f 84 3e 3c 01 00    	je     0x420443
40c805:	8b 45 10             	mov    0x10(%ebp),%eax
40c808:	85 c0                	test   %eax,%eax
40c80a:	74 6c                	je     0x40c878
40c80c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c80f:	33 ff                	xor    %edi,%edi
40c811:	89 38                	mov    %edi,(%eax)
40c813:	39 3b                	cmp    %edi,(%ebx)
40c815:	0f 84 98 3b 01 00    	je     0x4203b3
40c81b:	be 68 1a 40 00       	mov    $0x401a68,%esi
40c820:	39 7e f8             	cmp    %edi,-0x8(%esi)
40c823:	74 5a                	je     0x40c87f
40c825:	8b 4e f8             	mov    -0x8(%esi),%ecx
40c828:	8b d3                	mov    %ebx,%edx
40c82a:	89 7d fc             	mov    %edi,-0x4(%ebp)
40c82d:	e8 d8 fd ff ff       	call   0x40c60a
40c832:	85 c0                	test   %eax,%eax
40c834:	0f 84 d7 3b 01 00    	je     0x420411
40c83a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c83d:	8b 45 10             	mov    0x10(%ebp),%eax
40c840:	8b 16                	mov    (%esi),%edx
40c842:	89 55 f8             	mov    %edx,-0x8(%ebp)
40c845:	83 fa 01             	cmp    $0x1,%edx
40c848:	0f 85 a5 3b 01 00    	jne    0x4203f3
40c84e:	8b 76 fc             	mov    -0x4(%esi),%esi
40c851:	03 f1                	add    %ecx,%esi
40c853:	56                   	push   %esi
40c854:	8b 06                	mov    (%esi),%eax
40c856:	8b 58 04             	mov    0x4(%eax),%ebx
40c859:	81 fb d0 c5 40 00    	cmp    $0x40c5d0,%ebx
40c85f:	0f 85 c5 3b 01 00    	jne    0x42042a
40c865:	e8 66 fd ff ff       	call   0x40c5d0
40c86a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c86d:	89 31                	mov    %esi,(%ecx)
40c86f:	8b c7                	mov    %edi,%eax
40c871:	5f                   	pop    %edi
40c872:	5e                   	pop    %esi
40c873:	5b                   	pop    %ebx
40c874:	c9                   	leave
40c875:	c2 0c 00             	ret    $0xc
40c878:	bf 03 40 00 80       	mov    $0x80004003,%edi
40c87d:	eb f0                	jmp    0x40c86f
40c87f:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40c886:	eb b8                	jmp    0x40c840
40c888:	6a 08                	push   $0x8
40c88a:	b8 54 e3 41 00       	mov    $0x41e354,%eax
40c88f:	e8 7a e5 00 00       	call   0x41ae0e
40c894:	33 db                	xor    %ebx,%ebx
40c896:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c899:	39 1d 00 8f 43 00    	cmp    %ebx,0x438f00
40c89f:	75 59                	jne    0x40c8fa
40c8a1:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c8a4:	e8 2f fc ff ff       	call   0x40c4d8
40c8a9:	8b f0                	mov    %eax,%esi
40c8ab:	85 f6                	test   %esi,%esi
40c8ad:	0f 88 9a 3b 01 00    	js     0x42044d
40c8b3:	ff 75 ec             	push   -0x14(%ebp)
40c8b6:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40c8b9:	e8 dc fc ff ff       	call   0x40c59a
40c8be:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c8c2:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c8c5:	68 00 8f 43 00       	push   $0x438f00
40c8ca:	68 70 3f 40 00       	push   $0x403f70
40c8cf:	50                   	push   %eax
40c8d0:	8b 08                	mov    (%eax),%ecx
40c8d2:	8b 31                	mov    (%ecx),%esi
40c8d4:	81 fe f0 c7 40 00    	cmp    $0x40c7f0,%esi
40c8da:	0f 85 77 3b 01 00    	jne    0x420457
40c8e0:	e8 0b ff ff ff       	call   0x40c7f0
40c8e5:	8b f0                	mov    %eax,%esi
40c8e7:	85 f6                	test   %esi,%esi
40c8e9:	0f 88 77 3b 01 00    	js     0x420466
40c8ef:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40c8f2:	88 5d fc             	mov    %bl,-0x4(%ebp)
40c8f5:	e8 35 fd ff ff       	call   0x40c62f
40c8fa:	83 3d 78 8a 43 00 00 	cmpl   $0x0,0x438a78
40c901:	75 50                	jne    0x40c953
40c903:	8b 35 3c 1a 40 00    	mov    0x401a3c,%esi
40c909:	8b ce                	mov    %esi,%ecx
40c90b:	6a 40                	push   $0x40
40c90d:	ff 15 20 a5 43 00    	call   *0x43a520
40c913:	ff d6                	call   *%esi
40c915:	8b f0                	mov    %eax,%esi
40c917:	89 75 ec             	mov    %esi,-0x14(%ebp)
40c91a:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40c91e:	85 f6                	test   %esi,%esi
40c920:	74 7f                	je     0x40c9a1
40c922:	6a 03                	push   $0x3
40c924:	53                   	push   %ebx
40c925:	6a 11                	push   $0x11
40c927:	68 50 df 40 00       	push   $0x40df50
40c92c:	68 00 e1 40 00       	push   $0x40e100
40c931:	8b ce                	mov    %esi,%ecx
40c933:	e8 ba fd ff ff       	call   0x40c6f2
40c938:	8d 46 28             	lea    0x28(%esi),%eax
40c93b:	50                   	push   %eax
40c93c:	ff 15 cc a2 43 00    	call   *0x43a2cc
40c942:	88 5d fc             	mov    %bl,-0x4(%ebp)
40c945:	89 35 78 8a 43 00    	mov    %esi,0x438a78
40c94b:	85 f6                	test   %esi,%esi
40c94d:	0f 84 31 3b 01 00    	je     0x420484
40c953:	51                   	push   %ecx
40c954:	51                   	push   %ecx
40c955:	8b f4                	mov    %esp,%esi
40c957:	89 1e                	mov    %ebx,(%esi)
40c959:	89 5e 04             	mov    %ebx,0x4(%esi)
40c95c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c95f:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c962:	85 ff                	test   %edi,%edi
40c964:	74 0b                	je     0x40c971
40c966:	f0 ff 47 04          	lock incl 0x4(%edi)
40c96a:	8b 4e 04             	mov    0x4(%esi),%ecx
40c96d:	85 c9                	test   %ecx,%ecx
40c96f:	75 34                	jne    0x40c9a5
40c971:	89 7e 04             	mov    %edi,0x4(%esi)
40c974:	89 1e                	mov    %ebx,(%esi)
40c976:	e8 31 00 00 00       	call   0x40c9ac
40c97b:	8b f0                	mov    %eax,%esi
40c97d:	85 f6                	test   %esi,%esi
40c97f:	0f 88 0e 3b 01 00    	js     0x420493
40c985:	33 f6                	xor    %esi,%esi
40c987:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40c98b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c98e:	85 c9                	test   %ecx,%ecx
40c990:	74 05                	je     0x40c997
40c992:	e8 89 01 00 00       	call   0x40cb20
40c997:	8b c6                	mov    %esi,%eax
40c999:	e8 3e e4 00 00       	call   0x41addc
40c99e:	c2 08 00             	ret    $0x8
40c9a1:	8b f3                	mov    %ebx,%esi
40c9a3:	eb 9d                	jmp    0x40c942
40c9a5:	e8 76 01 00 00       	call   0x40cb20
40c9aa:	eb c5                	jmp    0x40c971
40c9ac:	6a 1c                	push   $0x1c
40c9ae:	b8 87 e3 41 00       	mov    $0x41e387,%eax
40c9b3:	e8 89 e4 00 00       	call   0x41ae41
40c9b8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c9bc:	a1 78 8a 43 00       	mov    0x438a78,%eax
40c9c1:	89 45 dc             	mov    %eax,-0x24(%ebp)
40c9c4:	8d 45 d8             	lea    -0x28(%ebp),%eax
40c9c7:	c7 45 d8 38 19 40 00 	movl   $0x401938,-0x28(%ebp)