40f708:	8b 4e 2c             	mov    0x2c(%esi),%ecx
40f70b:	ff 15 28 63 41 00    	call   *0x416328
40f711:	ff 56 2c             	call   *0x2c(%esi)
40f714:	85 c0                	test   %eax,%eax
40f716:	79 0d                	jns    0x40f725
40f718:	50                   	push   %eax
40f719:	68 1c 40 40 00       	push   $0x40401c
40f71e:	68 39 03 00 00       	push   $0x339
40f723:	eb 60                	jmp    0x40f785
40f725:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
40f729:	75 0d                	jne    0x40f738
40f72b:	53                   	push   %ebx
40f72c:	68 1c 40 40 00       	push   $0x40401c
40f731:	68 3a 03 00 00       	push   $0x33a
40f736:	eb 4d                	jmp    0x40f785
40f738:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f73b:	8d 55 e8             	lea    -0x18(%ebp),%edx
40f73e:	52                   	push   %edx
40f73f:	50                   	push   %eax
40f740:	8b 08                	mov    (%eax),%ecx
40f742:	8b 71 20             	mov    0x20(%ecx),%esi
40f745:	8b ce                	mov    %esi,%ecx
40f747:	ff 15 28 63 41 00    	call   *0x416328
40f74d:	ff d6                	call   *%esi
40f74f:	85 c0                	test   %eax,%eax
40f751:	79 0d                	jns    0x40f760
40f753:	50                   	push   %eax
40f754:	68 1c 40 40 00       	push   $0x40401c
40f759:	68 3f 03 00 00       	push   $0x33f
40f75e:	eb 25                	jmp    0x40f785
40f760:	8b 47 04             	mov    0x4(%edi),%eax
40f763:	ff 75 e8             	push   -0x18(%ebp)
40f766:	50                   	push   %eax
40f767:	8b 08                	mov    (%eax),%ecx
40f769:	8b 71 1c             	mov    0x1c(%ecx),%esi
40f76c:	8b ce                	mov    %esi,%ecx
40f76e:	ff 15 28 63 41 00    	call   *0x416328
40f774:	ff d6                	call   *%esi
40f776:	85 c0                	test   %eax,%eax
40f778:	79 77                	jns    0x40f7f1
40f77a:	50                   	push   %eax
40f77b:	68 1c 40 40 00       	push   $0x40401c
40f780:	68 45 03 00 00       	push   $0x345
40f785:	68 60 3f 40 00       	push   $0x403f60
40f78a:	51                   	push   %ecx
40f78b:	e8 42 18 00 00       	call   0x410fd2
40f790:	8b 4f 04             	mov    0x4(%edi),%ecx
40f793:	85 c9                	test   %ecx,%ecx
40f795:	74 5a                	je     0x40f7f1
40f797:	8d 45 e0             	lea    -0x20(%ebp),%eax
40f79a:	50                   	push   %eax
40f79b:	e8 0e f8 ff ff       	call   0x40efae
40f7a0:	85 c0                	test   %eax,%eax
40f7a2:	78 4d                	js     0x40f7f1
40f7a4:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40f7a7:	85 db                	test   %ebx,%ebx
40f7a9:	74 46                	je     0x40f7f1
40f7ab:	68 cc 3c 40 00       	push   $0x403ccc
40f7b0:	ff 15 a4 61 41 00    	call   *0x4161a4
40f7b6:	8b f0                	mov    %eax,%esi
40f7b8:	89 75 e0             	mov    %esi,-0x20(%ebp)
40f7bb:	85 f6                	test   %esi,%esi
40f7bd:	74 56                	je     0x40f815
40f7bf:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f7c3:	8b 03                	mov    (%ebx),%eax
40f7c5:	56                   	push   %esi
40f7c6:	6a 00                	push   $0x0
40f7c8:	53                   	push   %ebx
40f7c9:	8b 78 1c             	mov    0x1c(%eax),%edi
40f7cc:	8b cf                	mov    %edi,%ecx
40f7ce:	ff 15 28 63 41 00    	call   *0x416328
40f7d4:	ff d7                	call   *%edi
40f7d6:	56                   	push   %esi
40f7d7:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40f7db:	ff 15 b8 61 41 00    	call   *0x4161b8
40f7e1:	8b 03                	mov    (%ebx),%eax
40f7e3:	53                   	push   %ebx
40f7e4:	8b 70 08             	mov    0x8(%eax),%esi
40f7e7:	8b ce                	mov    %esi,%ecx
40f7e9:	ff 15 28 63 41 00    	call   *0x416328
40f7ef:	ff d6                	call   *%esi
40f7f1:	ff 75 ec             	push   -0x14(%ebp)
40f7f4:	ff 15 b8 61 41 00    	call   *0x4161b8
40f7fa:	ff 75 e8             	push   -0x18(%ebp)
40f7fd:	ff 15 b8 61 41 00    	call   *0x4161b8
40f803:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f806:	e8 e4 71 ff ff       	call   0x4069ef
40f80b:	33 c0                	xor    %eax,%eax
40f80d:	e8 1a 2d 00 00       	call   0x41252c
40f812:	c2 04 00             	ret    $0x4
40f815:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
40f81a:	e8 d0 53 ff ff       	call   0x404bef
40f81f:	cc                   	int3
40f820:	6a 08                	push   $0x8
40f822:	b8 9b 30 41 00       	mov    $0x41309b,%eax
40f827:	e8 32 2d 00 00       	call   0x41255e
40f82c:	33 db                	xor    %ebx,%ebx
40f82e:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40f831:	8b 7d 08             	mov    0x8(%ebp),%edi
40f834:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f837:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40f83a:	85 ff                	test   %edi,%edi
40f83c:	75 1f                	jne    0x40f85d
40f83e:	68 03 40 00 80       	push   $0x80004003
40f843:	68 48 40 40 00       	push   $0x404048
40f848:	68 74 03 00 00       	push   $0x374
40f84d:	68 60 3f 40 00       	push   $0x403f60
40f852:	51                   	push   %ecx
40f853:	e8 7a 17 00 00       	call   0x410fd2
40f858:	e9 3d 01 00 00       	jmp    0x40f99a
40f85d:	39 1f                	cmp    %ebx,(%edi)
40f85f:	75 14                	jne    0x40f875
40f861:	68 03 40 00 80       	push   $0x80004003
40f866:	68 48 40 40 00       	push   $0x404048
40f86b:	68 75 03 00 00       	push   $0x375
40f870:	e9 ea 00 00 00       	jmp    0x40f95f
40f875:	39 5f 04             	cmp    %ebx,0x4(%edi)
40f878:	75 14                	jne    0x40f88e
40f87a:	68 03 40 00 80       	push   $0x80004003
40f87f:	68 48 40 40 00       	push   $0x404048
40f884:	68 76 03 00 00       	push   $0x376
40f889:	e9 d1 00 00 00       	jmp    0x40f95f
40f88e:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f891:	50                   	push   %eax
40f892:	68 08 2b 40 00       	push   $0x402b08
40f897:	6a 04                	push   $0x4
40f899:	53                   	push   %ebx
40f89a:	68 c8 2c 40 00       	push   $0x402cc8
40f89f:	ff 15 20 62 41 00    	call   *0x416220
40f8a5:	8b f0                	mov    %eax,%esi
40f8a7:	85 f6                	test   %esi,%esi
40f8a9:	79 17                	jns    0x40f8c2
40f8ab:	51                   	push   %ecx
40f8ac:	51                   	push   %ecx
40f8ad:	e8 5d 15 00 00       	call   0x410e0f
40f8b2:	56                   	push   %esi
40f8b3:	68 48 40 40 00       	push   $0x404048
40f8b8:	68 83 03 00 00       	push   $0x383
40f8bd:	e9 9d 00 00 00       	jmp    0x40f95f
40f8c2:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f8c5:	ff 37                	push   (%edi)
40f8c7:	50                   	push   %eax
40f8c8:	8b 08                	mov    (%eax),%ecx
40f8ca:	8b 71 24             	mov    0x24(%ecx),%esi
40f8cd:	8b ce                	mov    %esi,%ecx
40f8cf:	ff 15 28 63 41 00    	call   *0x416328
40f8d5:	ff d6                	call   *%esi
40f8d7:	85 c0                	test   %eax,%eax
40f8d9:	79 0d                	jns    0x40f8e8
40f8db:	50                   	push   %eax
40f8dc:	68 48 40 40 00       	push   $0x404048
40f8e1:	68 8a 03 00 00       	push   $0x38a
40f8e6:	eb 77                	jmp    0x40f95f
40f8e8:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f8eb:	ff 77 04             	push   0x4(%edi)
40f8ee:	50                   	push   %eax
40f8ef:	8b 08                	mov    (%eax),%ecx
40f8f1:	8b 71 48             	mov    0x48(%ecx),%esi
40f8f4:	8b ce                	mov    %esi,%ecx
40f8f6:	ff 15 28 63 41 00    	call   *0x416328
40f8fc:	ff d6                	call   *%esi
40f8fe:	85 c0                	test   %eax,%eax
40f900:	79 0d                	jns    0x40f90f
40f902:	50                   	push   %eax
40f903:	68 48 40 40 00       	push   $0x404048
40f908:	68 90 03 00 00       	push   $0x390
40f90d:	eb 50                	jmp    0x40f95f
40f90f:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f912:	53                   	push   %ebx
40f913:	ff 37                	push   (%edi)
40f915:	8b 30                	mov    (%eax),%esi
40f917:	6a 01                	push   $0x1
40f919:	50                   	push   %eax
40f91a:	8b 4e 28             	mov    0x28(%esi),%ecx
40f91d:	ff 15 28 63 41 00    	call   *0x416328
40f923:	ff 56 28             	call   *0x28(%esi)
40f926:	85 c0                	test   %eax,%eax
40f928:	79 0d                	jns    0x40f937
40f92a:	50                   	push   %eax
40f92b:	68 48 40 40 00       	push   $0x404048
40f930:	68 96 03 00 00       	push   $0x396
40f935:	eb 28                	jmp    0x40f95f
40f937:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f93a:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f93d:	53                   	push   %ebx
40f93e:	51                   	push   %ecx
40f93f:	50                   	push   %eax
40f940:	8b 30                	mov    (%eax),%esi
40f942:	8b 4e 30             	mov    0x30(%esi),%ecx
40f945:	ff 15 28 63 41 00    	call   *0x416328
40f94b:	ff 56 30             	call   *0x30(%esi)
40f94e:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40f952:	75 16                	jne    0x40f96a
40f954:	50                   	push   %eax
40f955:	68 48 40 40 00       	push   $0x404048
40f95a:	68 9f 03 00 00       	push   $0x39f
40f95f:	68 60 3f 40 00       	push   $0x403f60
40f964:	51                   	push   %ecx
40f965:	e8 68 16 00 00       	call   0x410fd2
40f96a:	83 3f 00             	cmpl   $0x0,(%edi)
40f96d:	74 0a                	je     0x40f979
40f96f:	ff 37                	push   (%edi)
40f971:	ff 15 b8 61 41 00    	call   *0x4161b8
40f977:	89 1f                	mov    %ebx,(%edi)
40f979:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
40f97d:	74 0c                	je     0x40f98b
40f97f:	ff 77 04             	push   0x4(%edi)
40f982:	ff 15 b8 61 41 00    	call   *0x4161b8
40f988:	89 5f 04             	mov    %ebx,0x4(%edi)
40f98b:	57                   	push   %edi
40f98c:	53                   	push   %ebx
40f98d:	ff 15 e0 60 41 00    	call   *0x4160e0
40f993:	50                   	push   %eax
40f994:	ff 15 e4 60 41 00    	call   *0x4160e4
40f99a:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f99d:	e8 4d 70 ff ff       	call   0x4069ef
40f9a2:	33 c0                	xor    %eax,%eax
40f9a4:	e8 83 2b 00 00       	call   0x41252c
40f9a9:	c2 04 00             	ret    $0x4
40f9ac:	8b ff                	mov    %edi,%edi
40f9ae:	55                   	push   %ebp
40f9af:	8b ec                	mov    %esp,%ebp
40f9b1:	6a ff                	push   $0xffffffff
40f9b3:	68 dc 30 41 00       	push   $0x4130dc
40f9b8:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40f9be:	50                   	push   %eax
40f9bf:	56                   	push   %esi
40f9c0:	57                   	push   %edi
40f9c1:	a1 f4 51 41 00       	mov    0x4151f4,%eax
40f9c6:	33 c5                	xor    %ebp,%eax
40f9c8:	50                   	push   %eax
40f9c9:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f9cc:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40f9d2:	8b f9                	mov    %ecx,%edi
40f9d4:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40f9d8:	8b 4f 04             	mov    0x4(%edi),%ecx
40f9db:	c7 07 e8 19 40 00    	movl   $0x4019e8,(%edi)
40f9e1:	85 c9                	test   %ecx,%ecx
40f9e3:	74 1f                	je     0x40fa04
40f9e5:	8b 01                	mov    (%ecx),%eax
40f9e7:	51                   	push   %ecx
40f9e8:	8b 70 08             	mov    0x8(%eax),%esi
40f9eb:	8b ce                	mov    %esi,%ecx
40f9ed:	ff 15 28 63 41 00    	call   *0x416328
40f9f3:	ff d6                	call   *%esi
40f9f5:	83 67 04 00          	andl   $0x0,0x4(%edi)
40f9f9:	33 c9                	xor    %ecx,%ecx
40f9fb:	85 c9                	test   %ecx,%ecx
40f9fd:	74 05                	je     0x40fa04
40f9ff:	e8 cb df ff ff       	call   0x40d9cf
40fa04:	ff 77 24             	push   0x24(%edi)
40fa07:	ff 15 b8 61 41 00    	call   *0x4161b8
40fa0d:	57                   	push   %edi
40fa0e:	ff 15 d0 62 41 00    	call   *0x4162d0
40fa14:	59                   	pop    %ecx
40fa15:	8b c7                	mov    %edi,%eax
40fa17:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fa1a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fa21:	59                   	pop    %ecx
40fa22:	5f                   	pop    %edi
40fa23:	5e                   	pop    %esi
40fa24:	c9                   	leave
40fa25:	c2 04 00             	ret    $0x4
40fa28:	cc                   	int3
40fa29:	cc                   	int3
40fa2a:	cc                   	int3
40fa2b:	cc                   	int3
40fa2c:	cc                   	int3
40fa2d:	cc                   	int3
40fa2e:	cc                   	int3
40fa2f:	cc                   	int3
40fa30:	8b ff                	mov    %edi,%edi
40fa32:	55                   	push   %ebp
40fa33:	8b ec                	mov    %esp,%ebp
40fa35:	8b 4d 08             	mov    0x8(%ebp),%ecx
40fa38:	83 c8 ff             	or     $0xffffffff,%eax
40fa3b:	8d 51 08             	lea    0x8(%ecx),%edx
40fa3e:	f0 0f c1 02          	lock xadd %eax,(%edx)
40fa42:	75 0e                	jne    0x40fa52
40fa44:	85 c9                	test   %ecx,%ecx
40fa46:	74 06                	je     0x40fa4e
40fa48:	51                   	push   %ecx
40fa49:	e8 5e ff ff ff       	call   0x40f9ac
40fa4e:	33 c0                	xor    %eax,%eax
40fa50:	eb 02                	jmp    0x40fa54
40fa52:	8b 02                	mov    (%edx),%eax
40fa54:	5d                   	pop    %ebp
40fa55:	c2 04 00             	ret    $0x4
40fa58:	8b ff                	mov    %edi,%edi
40fa5a:	55                   	push   %ebp
40fa5b:	8b ec                	mov    %esp,%ebp
40fa5d:	53                   	push   %ebx
40fa5e:	8b d9                	mov    %ecx,%ebx
40fa60:	56                   	push   %esi
40fa61:	57                   	push   %edi
40fa62:	33 f6                	xor    %esi,%esi
40fa64:	8d 7b 24             	lea    0x24(%ebx),%edi
40fa67:	39 37                	cmp    %esi,(%edi)
40fa69:	75 37                	jne    0x40faa2
40fa6b:	68 00 00 00 f0       	push   $0xf0000000
40fa70:	6a 01                	push   $0x1
40fa72:	68 90 40 40 00       	push   $0x404090
40fa77:	56                   	push   %esi
40fa78:	57                   	push   %edi
40fa79:	ff 15 7c 60 41 00    	call   *0x41607c
40fa7f:	85 c0                	test   %eax,%eax
40fa81:	75 1f                	jne    0x40faa2
40fa83:	ff 15 68 61 41 00    	call   *0x416168
40fa89:	8b f0                	mov    %eax,%esi
40fa8b:	85 f6                	test   %esi,%esi
40fa8d:	7e 09                	jle    0x40fa98
40fa8f:	0f b7 f6             	movzwl %si,%esi
40fa92:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40fa98:	56                   	push   %esi
40fa99:	68 e8 40 40 00       	push   $0x4040e8
40fa9e:	6a 4a                	push   $0x4a
40faa0:	eb 74                	jmp    0x40fb16
40faa2:	39 75 08             	cmp    %esi,0x8(%ebp)
40faa5:	74 7a                	je     0x40fb21
40faa7:	83 c3 28             	add    $0x28,%ebx
40faaa:	39 33                	cmp    %esi,(%ebx)
40faac:	75 73                	jne    0x40fb21
40faae:	53                   	push   %ebx
40faaf:	6a 01                	push   $0x1
40fab1:	ff 37                	push   (%edi)
40fab3:	ff 15 80 60 41 00    	call   *0x416080
40fab9:	85 c0                	test   %eax,%eax
40fabb:	75 64                	jne    0x40fb21
40fabd:	ff 15 68 61 41 00    	call   *0x416168
40fac3:	3d 0d 00 09 80       	cmp    $0x8009000d,%eax
40fac8:	75 2f                	jne    0x40faf9
40faca:	53                   	push   %ebx
40facb:	56                   	push   %esi
40facc:	6a 01                	push   $0x1
40face:	ff 37                	push   (%edi)
40fad0:	ff 15 84 60 41 00    	call   *0x416084
40fad6:	85 c0                	test   %eax,%eax
40fad8:	75 47                	jne    0x40fb21
40fada:	ff 15 68 61 41 00    	call   *0x416168
40fae0:	8b f0                	mov    %eax,%esi
40fae2:	85 f6                	test   %esi,%esi
40fae4:	7e 09                	jle    0x40faef
40fae6:	0f b7 f6             	movzwl %si,%esi
40fae9:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40faef:	56                   	push   %esi
40faf0:	68 e8 40 40 00       	push   $0x4040e8
40faf5:	6a 68                	push   $0x68
40faf7:	eb 1d                	jmp    0x40fb16
40faf9:	ff 15 68 61 41 00    	call   *0x416168
40faff:	8b f0                	mov    %eax,%esi