40a707:	e8 44 94 ff ff       	call   0x403b50
40a70c:	8b 45 08             	mov    0x8(%ebp),%eax
40a70f:	ff 30                	push   (%eax)
40a711:	e8 8f 47 00 00       	call   0x40eea5
40a716:	59                   	pop    %ecx
40a717:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a71b:	8b 45 0c             	mov    0xc(%ebp),%eax
40a71e:	8b 00                	mov    (%eax),%eax
40a720:	8b 00                	mov    (%eax),%eax
40a722:	8b 48 48             	mov    0x48(%eax),%ecx
40a725:	85 c9                	test   %ecx,%ecx
40a727:	74 18                	je     0x40a741
40a729:	83 c8 ff             	or     $0xffffffff,%eax
40a72c:	f0 0f c1 01          	lock xadd %eax,(%ecx)
40a730:	75 0f                	jne    0x40a741
40a732:	81 f9 a0 35 42 00    	cmp    $0x4235a0,%ecx
40a738:	74 07                	je     0x40a741
40a73a:	51                   	push   %ecx
40a73b:	e8 e4 f0 ff ff       	call   0x409824
40a740:	59                   	pop    %ecx
40a741:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a748:	e8 08 00 00 00       	call   0x40a755
40a74d:	e8 44 94 ff ff       	call   0x403b96
40a752:	c2 0c 00             	ret    $0xc
40a755:	8b 45 10             	mov    0x10(%ebp),%eax
40a758:	ff 30                	push   (%eax)
40a75a:	e8 8e 47 00 00       	call   0x40eeed
40a75f:	59                   	pop    %ecx
40a760:	c3                   	ret
40a761:	6a 08                	push   $0x8
40a763:	68 00 1d 42 00       	push   $0x421d00
40a768:	e8 e3 93 ff ff       	call   0x403b50
40a76d:	8b 45 08             	mov    0x8(%ebp),%eax
40a770:	ff 30                	push   (%eax)
40a772:	e8 2e 47 00 00       	call   0x40eea5
40a777:	59                   	pop    %ecx
40a778:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a77c:	6a 00                	push   $0x0
40a77e:	8b 45 0c             	mov    0xc(%ebp),%eax
40a781:	8b 00                	mov    (%eax),%eax
40a783:	ff 30                	push   (%eax)
40a785:	e8 4d 02 00 00       	call   0x40a9d7
40a78a:	59                   	pop    %ecx
40a78b:	59                   	pop    %ecx
40a78c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a793:	e8 08 00 00 00       	call   0x40a7a0
40a798:	e8 f9 93 ff ff       	call   0x403b96
40a79d:	c2 0c 00             	ret    $0xc
40a7a0:	8b 45 10             	mov    0x10(%ebp),%eax
40a7a3:	ff 30                	push   (%eax)
40a7a5:	e8 43 47 00 00       	call   0x40eeed
40a7aa:	59                   	pop    %ecx
40a7ab:	c3                   	ret
40a7ac:	6a 08                	push   $0x8
40a7ae:	68 a0 1c 42 00       	push   $0x421ca0
40a7b3:	e8 98 93 ff ff       	call   0x403b50
40a7b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a7bb:	ff 30                	push   (%eax)
40a7bd:	e8 e3 46 00 00       	call   0x40eea5
40a7c2:	59                   	pop    %ecx
40a7c3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a7c7:	8b 45 0c             	mov    0xc(%ebp),%eax
40a7ca:	8b 00                	mov    (%eax),%eax
40a7cc:	8b 00                	mov    (%eax),%eax
40a7ce:	8b 40 48             	mov    0x48(%eax),%eax
40a7d1:	f0 ff 00             	lock incl (%eax)
40a7d4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a7db:	e8 08 00 00 00       	call   0x40a7e8
40a7e0:	e8 b1 93 ff ff       	call   0x403b96
40a7e5:	c2 0c 00             	ret    $0xc
40a7e8:	8b 45 10             	mov    0x10(%ebp),%eax
40a7eb:	ff 30                	push   (%eax)
40a7ed:	e8 fb 46 00 00       	call   0x40eeed
40a7f2:	59                   	pop    %ecx
40a7f3:	c3                   	ret
40a7f4:	8b ff                	mov    %edi,%edi
40a7f6:	55                   	push   %ebp
40a7f7:	8b ec                	mov    %esp,%ebp
40a7f9:	83 ec 0c             	sub    $0xc,%esp
40a7fc:	8b 45 08             	mov    0x8(%ebp),%eax
40a7ff:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a802:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a805:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a808:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a80b:	50                   	push   %eax
40a80c:	ff 75 0c             	push   0xc(%ebp)
40a80f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a812:	50                   	push   %eax
40a813:	e8 e8 fe ff ff       	call   0x40a700
40a818:	8b e5                	mov    %ebp,%esp
40a81a:	5d                   	pop    %ebp
40a81b:	c3                   	ret
40a81c:	8b ff                	mov    %edi,%edi
40a81e:	55                   	push   %ebp
40a81f:	8b ec                	mov    %esp,%ebp
40a821:	83 ec 0c             	sub    $0xc,%esp
40a824:	8b 45 08             	mov    0x8(%ebp),%eax
40a827:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a82a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a82d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a830:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a833:	50                   	push   %eax
40a834:	ff 75 0c             	push   0xc(%ebp)
40a837:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a83a:	50                   	push   %eax
40a83b:	e8 70 fe ff ff       	call   0x40a6b0
40a840:	8b e5                	mov    %ebp,%esp
40a842:	5d                   	pop    %ebp
40a843:	c3                   	ret
40a844:	8b ff                	mov    %edi,%edi
40a846:	55                   	push   %ebp
40a847:	8b ec                	mov    %esp,%ebp
40a849:	83 ec 0c             	sub    $0xc,%esp
40a84c:	8b 45 08             	mov    0x8(%ebp),%eax
40a84f:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a852:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a855:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a858:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a85b:	50                   	push   %eax
40a85c:	ff 75 0c             	push   0xc(%ebp)
40a85f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a862:	50                   	push   %eax
40a863:	e8 f9 fe ff ff       	call   0x40a761
40a868:	8b e5                	mov    %ebp,%esp
40a86a:	5d                   	pop    %ebp
40a86b:	c3                   	ret
40a86c:	8b ff                	mov    %edi,%edi
40a86e:	55                   	push   %ebp
40a86f:	8b ec                	mov    %esp,%ebp
40a871:	83 ec 0c             	sub    $0xc,%esp
40a874:	8b 45 08             	mov    0x8(%ebp),%eax
40a877:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a87a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a87d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a880:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a883:	50                   	push   %eax
40a884:	ff 75 0c             	push   0xc(%ebp)
40a887:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a88a:	50                   	push   %eax
40a88b:	e8 1c ff ff ff       	call   0x40a7ac
40a890:	8b e5                	mov    %ebp,%esp
40a892:	5d                   	pop    %ebp
40a893:	c3                   	ret
40a894:	8b ff                	mov    %edi,%edi
40a896:	55                   	push   %ebp
40a897:	8b ec                	mov    %esp,%ebp
40a899:	51                   	push   %ecx
40a89a:	51                   	push   %ecx
40a89b:	8b 45 08             	mov    0x8(%ebp),%eax
40a89e:	33 c9                	xor    %ecx,%ecx
40a8a0:	41                   	inc    %ecx
40a8a1:	6a 43                	push   $0x43
40a8a3:	89 48 18             	mov    %ecx,0x18(%eax)
40a8a6:	8b 45 08             	mov    0x8(%ebp),%eax
40a8a9:	c7 00 98 be 41 00    	movl   $0x41be98,(%eax)
40a8af:	8b 45 08             	mov    0x8(%ebp),%eax
40a8b2:	89 88 50 03 00 00    	mov    %ecx,0x350(%eax)
40a8b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a8bb:	59                   	pop    %ecx
40a8bc:	c7 40 48 a0 35 42 00 	movl   $0x4235a0,0x48(%eax)
40a8c3:	8b 45 08             	mov    0x8(%ebp),%eax
40a8c6:	66 89 48 6c          	mov    %cx,0x6c(%eax)
40a8ca:	8b 45 08             	mov    0x8(%ebp),%eax
40a8cd:	66 89 88 72 01 00 00 	mov    %cx,0x172(%eax)
40a8d4:	8b 45 08             	mov    0x8(%ebp),%eax
40a8d7:	83 a0 4c 03 00 00 00 	andl   $0x0,0x34c(%eax)
40a8de:	8d 45 08             	lea    0x8(%ebp),%eax
40a8e1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a8e4:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a8e7:	50                   	push   %eax
40a8e8:	6a 05                	push   $0x5
40a8ea:	e8 7d ff ff ff       	call   0x40a86c
40a8ef:	8d 45 08             	lea    0x8(%ebp),%eax
40a8f2:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a8f5:	8d 45 0c             	lea    0xc(%ebp),%eax
40a8f8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a8fb:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a8fe:	50                   	push   %eax
40a8ff:	6a 04                	push   $0x4
40a901:	e8 16 ff ff ff       	call   0x40a81c
40a906:	83 c4 10             	add    $0x10,%esp
40a909:	8b e5                	mov    %ebp,%esp
40a90b:	5d                   	pop    %ebp
40a90c:	c3                   	ret
40a90d:	8b ff                	mov    %edi,%edi
40a90f:	55                   	push   %ebp
40a910:	8b ec                	mov    %esp,%ebp
40a912:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40a916:	74 12                	je     0x40a92a
40a918:	ff 75 08             	push   0x8(%ebp)
40a91b:	e8 0e 00 00 00       	call   0x40a92e
40a920:	ff 75 08             	push   0x8(%ebp)
40a923:	e8 fc ee ff ff       	call   0x409824
40a928:	59                   	pop    %ecx
40a929:	59                   	pop    %ecx
40a92a:	5d                   	pop    %ebp
40a92b:	c2 04 00             	ret    $0x4
40a92e:	8b ff                	mov    %edi,%edi
40a930:	55                   	push   %ebp
40a931:	8b ec                	mov    %esp,%ebp
40a933:	51                   	push   %ecx
40a934:	8b 45 08             	mov    0x8(%ebp),%eax
40a937:	8b 08                	mov    (%eax),%ecx
40a939:	81 f9 98 be 41 00    	cmp    $0x41be98,%ecx
40a93f:	74 0a                	je     0x40a94b
40a941:	51                   	push   %ecx
40a942:	e8 dd ee ff ff       	call   0x409824
40a947:	8b 45 08             	mov    0x8(%ebp),%eax
40a94a:	59                   	pop    %ecx
40a94b:	ff 70 3c             	push   0x3c(%eax)
40a94e:	e8 d1 ee ff ff       	call   0x409824
40a953:	8b 45 08             	mov    0x8(%ebp),%eax
40a956:	ff 70 30             	push   0x30(%eax)
40a959:	e8 c6 ee ff ff       	call   0x409824
40a95e:	8b 45 08             	mov    0x8(%ebp),%eax
40a961:	ff 70 34             	push   0x34(%eax)
40a964:	e8 bb ee ff ff       	call   0x409824
40a969:	8b 45 08             	mov    0x8(%ebp),%eax
40a96c:	ff 70 38             	push   0x38(%eax)
40a96f:	e8 b0 ee ff ff       	call   0x409824
40a974:	8b 45 08             	mov    0x8(%ebp),%eax
40a977:	ff 70 28             	push   0x28(%eax)
40a97a:	e8 a5 ee ff ff       	call   0x409824
40a97f:	8b 45 08             	mov    0x8(%ebp),%eax
40a982:	ff 70 2c             	push   0x2c(%eax)
40a985:	e8 9a ee ff ff       	call   0x409824
40a98a:	8b 45 08             	mov    0x8(%ebp),%eax
40a98d:	ff 70 40             	push   0x40(%eax)
40a990:	e8 8f ee ff ff       	call   0x409824
40a995:	8b 45 08             	mov    0x8(%ebp),%eax
40a998:	ff 70 44             	push   0x44(%eax)
40a99b:	e8 84 ee ff ff       	call   0x409824
40a9a0:	8b 45 08             	mov    0x8(%ebp),%eax
40a9a3:	ff b0 60 03 00 00    	push   0x360(%eax)
40a9a9:	e8 76 ee ff ff       	call   0x409824
40a9ae:	8d 45 08             	lea    0x8(%ebp),%eax
40a9b1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a9b4:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a9b7:	50                   	push   %eax
40a9b8:	6a 05                	push   $0x5
40a9ba:	e8 35 fe ff ff       	call   0x40a7f4
40a9bf:	8d 45 08             	lea    0x8(%ebp),%eax
40a9c2:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a9c5:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a9c8:	50                   	push   %eax
40a9c9:	6a 04                	push   $0x4
40a9cb:	e8 74 fe ff ff       	call   0x40a844
40a9d0:	83 c4 34             	add    $0x34,%esp
40a9d3:	8b e5                	mov    %ebp,%esp
40a9d5:	5d                   	pop    %ebp
40a9d6:	c3                   	ret
40a9d7:	8b ff                	mov    %edi,%edi
40a9d9:	55                   	push   %ebp
40a9da:	8b ec                	mov    %esp,%ebp
40a9dc:	56                   	push   %esi
40a9dd:	8b 75 08             	mov    0x8(%ebp),%esi
40a9e0:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
40a9e4:	74 28                	je     0x40aa0e
40a9e6:	ff 76 4c             	push   0x4c(%esi)
40a9e9:	e8 d0 65 00 00       	call   0x410fbe
40a9ee:	8b 46 4c             	mov    0x4c(%esi),%eax
40a9f1:	59                   	pop    %ecx
40a9f2:	3b 05 bc 41 42 00    	cmp    0x4241bc,%eax
40a9f8:	74 14                	je     0x40aa0e
40a9fa:	3d 08 31 42 00       	cmp    $0x423108,%eax
40a9ff:	74 0d                	je     0x40aa0e
40aa01:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40aa05:	75 07                	jne    0x40aa0e
40aa07:	50                   	push   %eax
40aa08:	e8 e5 63 00 00       	call   0x410df2
40aa0d:	59                   	pop    %ecx
40aa0e:	8b 45 0c             	mov    0xc(%ebp),%eax
40aa11:	89 46 4c             	mov    %eax,0x4c(%esi)
40aa14:	5e                   	pop    %esi
40aa15:	85 c0                	test   %eax,%eax
40aa17:	74 07                	je     0x40aa20
40aa19:	50                   	push   %eax
40aa1a:	e8 56 63 00 00       	call   0x410d75
40aa1f:	59                   	pop    %ecx
40aa20:	5d                   	pop    %ebp
40aa21:	c3                   	ret
40aa22:	8b ff                	mov    %edi,%edi
40aa24:	56                   	push   %esi
40aa25:	57                   	push   %edi
40aa26:	ff 15 48 b0 41 00    	call   *0x41b048
40aa2c:	8b f0                	mov    %eax,%esi
40aa2e:	a1 5c 30 42 00       	mov    0x42305c,%eax
40aa33:	83 f8 ff             	cmp    $0xffffffff,%eax
40aa36:	74 0c                	je     0x40aa44
40aa38:	50                   	push   %eax
40aa39:	e8 a2 14 00 00       	call   0x40bee0
40aa3e:	8b f8                	mov    %eax,%edi
40aa40:	85 ff                	test   %edi,%edi
40aa42:	75 49                	jne    0x40aa8d
40aa44:	68 64 03 00 00       	push   $0x364
40aa49:	6a 01                	push   $0x1
40aa4b:	e8 5c ee ff ff       	call   0x4098ac
40aa50:	8b f8                	mov    %eax,%edi
40aa52:	59                   	pop    %ecx
40aa53:	59                   	pop    %ecx
40aa54:	85 ff                	test   %edi,%edi
40aa56:	75 09                	jne    0x40aa61
40aa58:	50                   	push   %eax
40aa59:	e8 c6 ed ff ff       	call   0x409824
40aa5e:	59                   	pop    %ecx
40aa5f:	eb 38                	jmp    0x40aa99
40aa61:	57                   	push   %edi
40aa62:	ff 35 5c 30 42 00    	push   0x42305c
40aa68:	e8 c9 14 00 00       	call   0x40bf36
40aa6d:	85 c0                	test   %eax,%eax
40aa6f:	75 03                	jne    0x40aa74
40aa71:	57                   	push   %edi
40aa72:	eb e5                	jmp    0x40aa59
40aa74:	68 bc 41 42 00       	push   $0x4241bc
40aa79:	57                   	push   %edi
40aa7a:	e8 15 fe ff ff       	call   0x40a894
40aa7f:	6a 00                	push   $0x0
40aa81:	e8 9e ed ff ff       	call   0x409824
40aa86:	83 c4 0c             	add    $0xc,%esp
40aa89:	85 ff                	test   %edi,%edi
40aa8b:	74 0c                	je     0x40aa99
40aa8d:	56                   	push   %esi
40aa8e:	ff 15 9c b0 41 00    	call   *0x41b09c
40aa94:	8b c7                	mov    %edi,%eax
40aa96:	5f                   	pop    %edi
40aa97:	5e                   	pop    %esi
40aa98:	c3                   	ret
40aa99:	56                   	push   %esi
40aa9a:	ff 15 9c b0 41 00    	call   *0x41b09c
40aaa0:	e8 3c ed ff ff       	call   0x4097e1
40aaa5:	cc                   	int3
40aaa6:	8b ff                	mov    %edi,%edi
40aaa8:	53                   	push   %ebx
40aaa9:	56                   	push   %esi
40aaaa:	57                   	push   %edi
40aaab:	ff 15 48 b0 41 00    	call   *0x41b048
40aab1:	8b f0                	mov    %eax,%esi
40aab3:	33 db                	xor    %ebx,%ebx
40aab5:	a1 5c 30 42 00       	mov    0x42305c,%eax
40aaba:	83 f8 ff             	cmp    $0xffffffff,%eax
40aabd:	74 0c                	je     0x40aacb
40aabf:	50                   	push   %eax
40aac0:	e8 1b 14 00 00       	call   0x40bee0
40aac5:	8b f8                	mov    %eax,%edi
40aac7:	85 ff                	test   %edi,%edi
40aac9:	75 51                	jne    0x40ab1c
40aacb:	68 64 03 00 00       	push   $0x364
40aad0:	6a 01                	push   $0x1
40aad2:	e8 d5 ed ff ff       	call   0x4098ac
40aad7:	8b f8                	mov    %eax,%edi