40f970:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f973:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f976:	89 04 b9             	mov    %eax,(%ecx,%edi,4)
40f979:	8b 46 60             	mov    0x60(%esi),%eax
40f97c:	3b 46 64             	cmp    0x64(%esi),%eax
40f97f:	75 08                	jne    0x40f989
40f981:	8b 46 68             	mov    0x68(%esi),%eax
40f984:	3b 46 6c             	cmp    0x6c(%esi),%eax
40f987:	74 13                	je     0x40f99c
40f989:	ff 46 68             	incl   0x68(%esi)
40f98c:	81 7e 68 00 01 00 00 	cmpl   $0x100,0x68(%esi)
40f993:	0f 84 a5 96 01 00    	je     0x42903e
40f999:	ff 4e 70             	decl   0x70(%esi)
40f99c:	47                   	inc    %edi
40f99d:	3b fb                	cmp    %ebx,%edi
40f99f:	7c bf                	jl     0x40f960
40f9a1:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f9a4:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f9a7:	80 78 18 00          	cmpb   $0x0,0x18(%eax)
40f9ab:	74 07                	je     0x40f9b4
40f9ad:	50                   	push   %eax
40f9ae:	ff 15 40 11 45 00    	call   *0x451140
40f9b4:	56                   	push   %esi
40f9b5:	53                   	push   %ebx
40f9b6:	ff 75 08             	push   0x8(%ebp)
40f9b9:	e8 02 de 00 00       	call   0x41d7c0
40f9be:	33 ff                	xor    %edi,%edi
40f9c0:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f9c3:	85 db                	test   %ebx,%ebx
40f9c5:	7e 1f                	jle    0x40f9e6
40f9c7:	8b 0c be             	mov    (%esi,%edi,4),%ecx
40f9ca:	85 c9                	test   %ecx,%ecx
40f9cc:	74 13                	je     0x40f9e1
40f9ce:	8b 01                	mov    (%ecx),%eax
40f9d0:	51                   	push   %ecx
40f9d1:	8b 70 08             	mov    0x8(%eax),%esi
40f9d4:	8b ce                	mov    %esi,%ecx
40f9d6:	ff 15 c4 12 45 00    	call   *0x4512c4
40f9dc:	ff d6                	call   *%esi
40f9de:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f9e1:	47                   	inc    %edi
40f9e2:	3b fb                	cmp    %ebx,%edi
40f9e4:	7c e1                	jl     0x40f9c7
40f9e6:	8b ce                	mov    %esi,%ecx
40f9e8:	e8 23 06 00 00       	call   0x410010
40f9ed:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f9f0:	8b 7d 08             	mov    0x8(%ebp),%edi
40f9f3:	8b 5d 10             	mov    0x10(%ebp),%ebx
40f9f6:	85 c0                	test   %eax,%eax
40f9f8:	78 02                	js     0x40f9fc
40f9fa:	8b c3                	mov    %ebx,%eax
40f9fc:	ff 75 18             	push   0x18(%ebp)
40f9ff:	ff 75 14             	push   0x14(%ebp)
40fa02:	50                   	push   %eax
40fa03:	ff 75 0c             	push   0xc(%ebp)
40fa06:	eb 08                	jmp    0x40fa10
40fa08:	ff 75 18             	push   0x18(%ebp)
40fa0b:	ff 75 14             	push   0x14(%ebp)
40fa0e:	53                   	push   %ebx
40fa0f:	56                   	push   %esi
40fa10:	57                   	push   %edi
40fa11:	e8 ea d5 00 00       	call   0x41d000
40fa16:	8b 55 f0             	mov    -0x10(%ebp),%edx
40fa19:	8b f0                	mov    %eax,%esi
40fa1b:	a1 00 f0 44 00       	mov    0x44f000,%eax
40fa20:	8b 8f a4 00 00 00    	mov    0xa4(%edi),%ecx
40fa26:	85 c9                	test   %ecx,%ecx
40fa28:	74 54                	je     0x40fa7e
40fa2a:	85 d2                	test   %edx,%edx
40fa2c:	75 50                	jne    0x40fa7e
40fa2e:	ff 75 18             	push   0x18(%ebp)
40fa31:	8b 81 34 01 00 00    	mov    0x134(%ecx),%eax
40fa37:	ff 75 14             	push   0x14(%ebp)
40fa3a:	53                   	push   %ebx
40fa3b:	ff b7 a0 00 00 00    	push   0xa0(%edi)
40fa41:	ff b7 9c 00 00 00    	push   0x9c(%edi)
40fa47:	ff b7 98 00 00 00    	push   0x98(%edi)
40fa4d:	ff b1 44 01 00 00    	push   0x144(%ecx)
40fa53:	ff b1 38 01 00 00    	push   0x138(%ecx)
40fa59:	ff b1 3c 01 00 00    	push   0x13c(%ecx)
40fa5f:	ff 70 38             	push   0x38(%eax)
40fa62:	ff b1 40 01 00 00    	push   0x140(%ecx)
40fa68:	6a 01                	push   $0x1
40fa6a:	ff 35 f0 09 45 00    	push   0x4509f0
40fa70:	ff 15 24 10 45 00    	call   *0x451024
40fa76:	a1 00 f0 44 00       	mov    0x44f000,%eax
40fa7b:	83 c4 34             	add    $0x34,%esp
40fa7e:	81 fe 08 10 04 80    	cmp    $0x80041008,%esi
40fa84:	75 0b                	jne    0x40fa91
40fa86:	8b c6                	mov    %esi,%eax
40fa88:	5f                   	pop    %edi
40fa89:	5e                   	pop    %esi
40fa8a:	5b                   	pop    %ebx
40fa8b:	8b e5                	mov    %ebp,%esp
40fa8d:	5d                   	pop    %ebp
40fa8e:	c2 14 00             	ret    $0x14
40fa91:	85 f6                	test   %esi,%esi
40fa93:	78 34                	js     0x40fac9
40fa95:	3d 00 f0 44 00       	cmp    $0x44f000,%eax
40fa9a:	74 0a                	je     0x40faa6
40fa9c:	f6 40 1c 04          	testb  $0x4,0x1c(%eax)
40faa0:	0f 85 ac 95 01 00    	jne    0x429052
40faa6:	8b c6                	mov    %esi,%eax
40faa8:	eb de                	jmp    0x40fa88
40faaa:	80 7e 18 00          	cmpb   $0x0,0x18(%esi)
40faae:	74 07                	je     0x40fab7
40fab0:	56                   	push   %esi
40fab1:	ff 15 40 11 45 00    	call   *0x451140
40fab7:	8b 5d 10             	mov    0x10(%ebp),%ebx
40faba:	e9 3b ff ff ff       	jmp    0x40f9fa
40fabf:	be 33 10 04 80       	mov    $0x80041033,%esi
40fac4:	e9 57 ff ff ff       	jmp    0x40fa20
40fac9:	56                   	push   %esi
40faca:	ff 15 a0 12 45 00    	call   *0x4512a0
40fad0:	8b c8                	mov    %eax,%ecx
40fad2:	ff 15 a4 12 45 00    	call   *0x4512a4
40fad8:	a1 00 f0 44 00       	mov    0x44f000,%eax
40fadd:	eb b6                	jmp    0x40fa95
40fadf:	cc                   	int3
40fae0:	8b ff                	mov    %edi,%edi
40fae2:	55                   	push   %ebp
40fae3:	8b ec                	mov    %esp,%ebp
40fae5:	6a ff                	push   $0xffffffff
40fae7:	68 d8 33 42 00       	push   $0x4233d8
40faec:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40faf2:	50                   	push   %eax
40faf3:	83 ec 34             	sub    $0x34,%esp
40faf6:	53                   	push   %ebx
40faf7:	56                   	push   %esi
40faf8:	57                   	push   %edi
40faf9:	a1 54 02 45 00       	mov    0x450254,%eax
40fafe:	33 c5                	xor    %ebp,%eax
40fb00:	50                   	push   %eax
40fb01:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fb04:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40fb0a:	8b 45 08             	mov    0x8(%ebp),%eax
40fb0d:	33 f6                	xor    %esi,%esi
40fb0f:	39 70 58             	cmp    %esi,0x58(%eax)
40fb12:	0f 85 c0 02 00 00    	jne    0x40fdd8
40fb18:	80 b8 94 00 00 00 00 	cmpb   $0x0,0x94(%eax)
40fb1f:	8d 78 7c             	lea    0x7c(%eax),%edi
40fb22:	89 7d ec             	mov    %edi,-0x14(%ebp)
40fb25:	0f 84 92 95 01 00    	je     0x4290bd
40fb2b:	8b cf                	mov    %edi,%ecx
40fb2d:	e8 6e c0 ff ff       	call   0x40bba0
40fb32:	84 c0                	test   %al,%al
40fb34:	0f 84 83 95 01 00    	je     0x4290bd
40fb3a:	8b 45 0c             	mov    0xc(%ebp),%eax
40fb3d:	33 db                	xor    %ebx,%ebx
40fb3f:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40fb42:	3b d8                	cmp    %eax,%ebx
40fb44:	0f 8d 10 01 00 00    	jge    0x40fc5a
40fb4a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40fb4d:	8b 0c 99             	mov    (%ecx,%ebx,4),%ecx
40fb50:	85 c9                	test   %ecx,%ecx
40fb52:	0f 84 f6 00 00 00    	je     0x40fc4e
40fb58:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
40fb5f:	8d 55 f0             	lea    -0x10(%ebp),%edx
40fb62:	8b 01                	mov    (%ecx),%eax
40fb64:	52                   	push   %edx
40fb65:	51                   	push   %ecx
40fb66:	8b 70 30             	mov    0x30(%eax),%esi
40fb69:	8b ce                	mov    %esi,%ecx
40fb6b:	ff 15 c4 12 45 00    	call   *0x4512c4
40fb71:	ff d6                	call   *%esi
40fb73:	8b f0                	mov    %eax,%esi
40fb75:	89 75 e0             	mov    %esi,-0x20(%ebp)
40fb78:	85 f6                	test   %esi,%esi
40fb7a:	0f 88 cb 00 00 00    	js     0x40fc4b
40fb80:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40fb83:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
40fb86:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40fb8d:	8d 45 d8             	lea    -0x28(%ebp),%eax
40fb90:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40fb93:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
40fb9a:	50                   	push   %eax
40fb9b:	68 30 6a 40 00       	push   $0x406a30
40fba0:	8b 31                	mov    (%ecx),%esi
40fba2:	51                   	push   %ecx
40fba3:	8b 36                	mov    (%esi),%esi
40fba5:	8b ce                	mov    %esi,%ecx
40fba7:	ff 15 c4 12 45 00    	call   *0x4512c4
40fbad:	ff d6                	call   *%esi
40fbaf:	85 c0                	test   %eax,%eax
40fbb1:	0f 88 fc 94 01 00    	js     0x4290b3
40fbb7:	8b 45 d8             	mov    -0x28(%ebp),%eax
40fbba:	89 45 c8             	mov    %eax,-0x38(%ebp)
40fbbd:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40fbc1:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40fbc4:	8b 45 d8             	mov    -0x28(%ebp),%eax
40fbc7:	51                   	push   %ecx
40fbc8:	6a 00                	push   $0x0
40fbca:	6a 00                	push   $0x0
40fbcc:	8b 30                	mov    (%eax),%esi
40fbce:	50                   	push   %eax
40fbcf:	8b b6 14 01 00 00    	mov    0x114(%esi),%esi
40fbd5:	8b ce                	mov    %esi,%ecx
40fbd7:	ff 15 c4 12 45 00    	call   *0x4512c4
40fbdd:	ff d6                	call   *%esi
40fbdf:	3d 3c 10 04 80       	cmp    $0x8004103c,%eax
40fbe4:	0f 85 bf 94 01 00    	jne    0x4290a9
40fbea:	8b 75 08             	mov    0x8(%ebp),%esi
40fbed:	8d 45 f0             	lea    -0x10(%ebp),%eax
40fbf0:	83 c6 60             	add    $0x60,%esi
40fbf3:	50                   	push   %eax
40fbf4:	8b ce                	mov    %esi,%ecx
40fbf6:	e8 55 02 00 00       	call   0x40fe50
40fbfb:	85 c0                	test   %eax,%eax
40fbfd:	0f 85 cb 01 00 00    	jne    0x40fdce
40fc03:	8b 45 f0             	mov    -0x10(%ebp),%eax
40fc06:	50                   	push   %eax
40fc07:	8b 08                	mov    (%eax),%ecx
40fc09:	8b 79 04             	mov    0x4(%ecx),%edi
40fc0c:	8b cf                	mov    %edi,%ecx
40fc0e:	ff 15 c4 12 45 00    	call   *0x4512c4
40fc14:	ff d7                	call   *%edi
40fc16:	8b 7d 08             	mov    0x8(%ebp),%edi
40fc19:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40fc1c:	01 47 5c             	add    %eax,0x5c(%edi)
40fc1f:	8b 47 5c             	mov    0x5c(%edi),%eax
40fc22:	3b 05 78 02 45 00    	cmp    0x450278,%eax
40fc28:	73 53                	jae    0x40fc7d
40fc2a:	8b 7d ec             	mov    -0x14(%ebp),%edi
40fc2d:	8b 75 e0             	mov    -0x20(%ebp),%esi
40fc30:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40fc34:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40fc37:	e8 b4 01 00 00       	call   0x40fdf0
40fc3c:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40fc43:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40fc46:	e8 a5 01 00 00       	call   0x40fdf0
40fc4b:	8b 45 0c             	mov    0xc(%ebp),%eax
40fc4e:	43                   	inc    %ebx
40fc4f:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40fc52:	85 f6                	test   %esi,%esi
40fc54:	0f 89 e8 fe ff ff    	jns    0x40fb42
40fc5a:	80 7f 18 00          	cmpb   $0x0,0x18(%edi)
40fc5e:	74 07                	je     0x40fc67
40fc60:	57                   	push   %edi
40fc61:	ff 15 40 11 45 00    	call   *0x451140
40fc67:	8b c6                	mov    %esi,%eax
40fc69:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fc6c:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fc73:	59                   	pop    %ecx
40fc74:	5f                   	pop    %edi
40fc75:	5e                   	pop    %esi
40fc76:	5b                   	pop    %ebx
40fc77:	8b e5                	mov    %ebp,%esp
40fc79:	5d                   	pop    %ebp
40fc7a:	c2 0c 00             	ret    $0xc
40fc7d:	8b 47 70             	mov    0x70(%edi),%eax
40fc80:	33 c9                	xor    %ecx,%ecx
40fc82:	89 45 e8             	mov    %eax,-0x18(%ebp)
40fc85:	ba 04 00 00 00       	mov    $0x4,%edx
40fc8a:	f7 e2                	mul    %edx
40fc8c:	0f 90 c1             	seto   %cl
40fc8f:	f7 d9                	neg    %ecx
40fc91:	0b c8                	or     %eax,%ecx
40fc93:	a1 80 0b 45 00       	mov    0x450b80,%eax
40fc98:	8b 50 08             	mov    0x8(%eax),%edx
40fc9b:	8b 40 04             	mov    0x4(%eax),%eax
40fc9e:	83 e2 05             	and    $0x5,%edx
40fca1:	83 ca 08             	or     $0x8,%edx
40fca4:	85 c0                	test   %eax,%eax
40fca6:	0f 84 d1 93 01 00    	je     0x42907d
40fcac:	51                   	push   %ecx
40fcad:	52                   	push   %edx
40fcae:	50                   	push   %eax
40fcaf:	ff 15 78 10 45 00    	call   *0x451078
40fcb5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fcb8:	85 c0                	test   %eax,%eax
40fcba:	0f 84 b7 93 01 00    	je     0x429077
40fcc0:	8d 45 d0             	lea    -0x30(%ebp),%eax
40fcc3:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40fcca:	50                   	push   %eax
40fccb:	8b ce                	mov    %esi,%ecx
40fccd:	e8 be 01 00 00       	call   0x40fe90
40fcd2:	85 c0                	test   %eax,%eax
40fcd4:	75 4f                	jne    0x40fd25
40fcd6:	8b 7d e0             	mov    -0x20(%ebp),%edi
40fcd9:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40fcdc:	8d 64 24 00          	lea    0x0(%esp),%esp
40fce0:	3b fb                	cmp    %ebx,%edi
40fce2:	73 3b                	jae    0x40fd1f
40fce4:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40fce7:	8b 45 d0             	mov    -0x30(%ebp),%eax
40fcea:	89 04 b9             	mov    %eax,(%ecx,%edi,4)
40fced:	47                   	inc    %edi
40fcee:	8b 06                	mov    (%esi),%eax
40fcf0:	3b 46 04             	cmp    0x4(%esi),%eax
40fcf3:	75 08                	jne    0x40fcfd
40fcf5:	8b 46 08             	mov    0x8(%esi),%eax
40fcf8:	3b 46 0c             	cmp    0xc(%esi),%eax
40fcfb:	74 13                	je     0x40fd10
40fcfd:	ff 46 08             	incl   0x8(%esi)
40fd00:	81 7e 08 00 01 00 00 	cmpl   $0x100,0x8(%esi)
40fd07:	0f 84 7d 93 01 00    	je     0x42908a
40fd0d:	ff 4e 10             	decl   0x10(%esi)
40fd10:	8d 45 d0             	lea    -0x30(%ebp),%eax
40fd13:	8b ce                	mov    %esi,%ecx
40fd15:	50                   	push   %eax
40fd16:	e8 75 01 00 00       	call   0x40fe90
40fd1b:	85 c0                	test   %eax,%eax
40fd1d:	74 c1                	je     0x40fce0
40fd1f:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40fd22:	8b 7d 08             	mov    0x8(%ebp),%edi
40fd25:	c7 47 5c 00 00 00 00 	movl   $0x0,0x5c(%edi)
40fd2c:	8b 7d ec             	mov    -0x14(%ebp),%edi
40fd2f:	80 7f 18 00          	cmpb   $0x0,0x18(%edi)
40fd33:	74 07                	je     0x40fd3c
40fd35:	57                   	push   %edi
40fd36:	ff 15 40 11 45 00    	call   *0x451140
40fd3c:	8b 45 08             	mov    0x8(%ebp),%eax
40fd3f:	8d 70 28             	lea    0x28(%eax),%esi
40fd42:	89 75 c0             	mov    %esi,-0x40(%ebp)
40fd45:	f0 ff 06             	lock incl (%esi)
40fd48:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40fd4c:	83 78 58 00          	cmpl   $0x0,0x58(%eax)
40fd50:	0f 85 47 93 01 00    	jne    0x42909d
40fd56:	8b 40 34             	mov    0x34(%eax),%eax
40fd59:	ff 75 e4             	push   -0x1c(%ebp)
40fd5c:	ff 75 e8             	push   -0x18(%ebp)
40fd5f:	8b 08                	mov    (%eax),%ecx
40fd61:	50                   	push   %eax
40fd62:	8b 79 0c             	mov    0xc(%ecx),%edi
40fd65:	8b cf                	mov    %edi,%ecx
40fd67:	ff 15 c4 12 45 00    	call   *0x4512c4
40fd6d:	ff d7                	call   *%edi
40fd6f:	8b 7d ec             	mov    -0x14(%ebp),%edi
40fd72:	89 45 e0             	mov    %eax,-0x20(%ebp)
40fd75:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40fd79:	f0 ff 0e             	lock decl (%esi)
40fd7c:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40fd80:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
40fd87:	76 28                	jbe    0x40fdb1
40fd89:	8b 7d cc             	mov    -0x34(%ebp),%edi
40fd8c:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40fd8f:	90                   	nop
40fd90:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40fd93:	8b 04 b8             	mov    (%eax,%edi,4),%eax
40fd96:	50                   	push   %eax
40fd97:	8b 08                	mov    (%eax),%ecx
40fd99:	8b 71 08             	mov    0x8(%ecx),%esi
40fd9c:	8b ce                	mov    %esi,%ecx
40fd9e:	ff 15 c4 12 45 00    	call   *0x4512c4
40fda4:	ff d6                	call   *%esi
40fda6:	47                   	inc    %edi
40fda7:	3b fb                	cmp    %ebx,%edi
40fda9:	72 e5                	jb     0x40fd90
40fdab:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40fdae:	8b 7d ec             	mov    -0x14(%ebp),%edi