40ea5c:	41                   	inc    %ecx
40ea5d:	52                   	push   %edx
40ea5e:	50                   	push   %eax
40ea5f:	52                   	push   %edx
40ea60:	51                   	push   %ecx
40ea61:	68 00 01 00 00       	push   $0x100
40ea66:	ff b6 a8 00 00 00    	push   0xa8(%esi)
40ea6c:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40ea6f:	53                   	push   %ebx
40ea70:	e8 9f 9f 00 00       	call   0x418a14
40ea75:	83 c4 24             	add    $0x24,%esp
40ea78:	85 c0                	test   %eax,%eax
40ea7a:	0f 84 27 02 00 00    	je     0x40eca7
40ea80:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ea83:	b9 ff 00 00 00       	mov    $0xff,%ecx
40ea88:	53                   	push   %ebx
40ea89:	ff 76 08             	push   0x8(%esi)
40ea8c:	05 81 00 00 00       	add    $0x81,%eax
40ea91:	51                   	push   %ecx
40ea92:	50                   	push   %eax
40ea93:	51                   	push   %ecx
40ea94:	ff 75 d4             	push   -0x2c(%ebp)
40ea97:	68 00 02 00 00       	push   $0x200
40ea9c:	ff b6 a8 00 00 00    	push   0xa8(%esi)
40eaa2:	53                   	push   %ebx
40eaa3:	e8 6c 9f 00 00       	call   0x418a14
40eaa8:	83 c4 24             	add    $0x24,%esp
40eaab:	85 c0                	test   %eax,%eax
40eaad:	0f 84 f4 01 00 00    	je     0x40eca7
40eab3:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40eab6:	53                   	push   %ebx
40eab7:	ff 76 08             	push   0x8(%esi)
40eaba:	05 00 01 00 00       	add    $0x100,%eax
40eabf:	50                   	push   %eax
40eac0:	68 00 01 00 00       	push   $0x100
40eac5:	ff 75 dc             	push   -0x24(%ebp)
40eac8:	89 45 bc             	mov    %eax,-0x44(%ebp)
40eacb:	6a 01                	push   $0x1
40eacd:	53                   	push   %ebx
40eace:	e8 54 9c 00 00       	call   0x418727
40ead3:	83 c4 1c             	add    $0x1c,%esp
40ead6:	85 c0                	test   %eax,%eax
40ead8:	0f 84 c9 01 00 00    	je     0x40eca7
40eade:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40eae1:	33 d2                	xor    %edx,%edx
40eae3:	83 7d c8 01          	cmpl   $0x1,-0x38(%ebp)
40eae7:	8d 88 fe 00 00 00    	lea    0xfe(%eax),%ecx
40eaed:	66 89 11             	mov    %dx,(%ecx)
40eaf0:	8b 55 d8             	mov    -0x28(%ebp),%edx
40eaf3:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40eaf6:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40eaf9:	8d ba 80 00 00 00    	lea    0x80(%edx),%edi
40eaff:	88 5a 7f             	mov    %bl,0x7f(%edx)
40eb02:	89 7d b4             	mov    %edi,-0x4c(%ebp)
40eb05:	88 59 7f             	mov    %bl,0x7f(%ecx)
40eb08:	88 1f                	mov    %bl,(%edi)
40eb0a:	8d b9 80 00 00 00    	lea    0x80(%ecx),%edi
40eb10:	89 7d b0             	mov    %edi,-0x50(%ebp)
40eb13:	88 1f                	mov    %bl,(%edi)
40eb15:	0f 86 ca 00 00 00    	jbe    0x40ebe5
40eb1b:	81 7e 08 e9 fd 00 00 	cmpl   $0xfde9,0x8(%esi)
40eb22:	75 57                	jne    0x40eb7b
40eb24:	05 00 02 00 00       	add    $0x200,%eax
40eb29:	8b f9                	mov    %ecx,%edi
40eb2b:	89 45 d8             	mov    %eax,-0x28(%ebp)
40eb2e:	8d 8a 00 01 00 00    	lea    0x100(%edx),%ecx
40eb34:	6a 80                	push   $0xffffff80
40eb36:	be be fe ff ff       	mov    $0xfffffebe,%esi
40eb3b:	2b fa                	sub    %edx,%edi
40eb3d:	58                   	pop    %eax
40eb3e:	2b f2                	sub    %edx,%esi
40eb40:	2b c2                	sub    %edx,%eax
40eb42:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40eb45:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
40eb48:	6a 32                	push   $0x32
40eb4a:	5b                   	pop    %ebx
40eb4b:	3b d8                	cmp    %eax,%ebx
40eb4d:	8b 5d d8             	mov    -0x28(%ebp),%ebx
40eb50:	1b c0                	sbb    %eax,%eax
40eb52:	83 45 d8 02          	addl   $0x2,-0x28(%ebp)
40eb56:	25 00 80 ff ff       	and    $0xffff8000,%eax
40eb5b:	05 00 80 00 00       	add    $0x8000,%eax
40eb60:	66 89 03             	mov    %ax,(%ebx)
40eb63:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
40eb66:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
40eb69:	88 01                	mov    %al,(%ecx)
40eb6b:	88 04 0f             	mov    %al,(%edi,%ecx,1)
40eb6e:	41                   	inc    %ecx
40eb6f:	8d 04 0b             	lea    (%ebx,%ecx,1),%eax
40eb72:	3d ff 00 00 00       	cmp    $0xff,%eax
40eb77:	7e cc                	jle    0x40eb45
40eb79:	eb 68                	jmp    0x40ebe3
40eb7b:	8d 7d ee             	lea    -0x12(%ebp),%edi
40eb7e:	38 5d ee             	cmp    %bl,-0x12(%ebp)
40eb81:	74 62                	je     0x40ebe5
40eb83:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40eb86:	8a 47 01             	mov    0x1(%edi),%al
40eb89:	84 c0                	test   %al,%al
40eb8b:	74 56                	je     0x40ebe3
40eb8d:	0f b6 37             	movzbl (%edi),%esi
40eb90:	0f b6 c0             	movzbl %al,%eax
40eb93:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40eb96:	3b f0                	cmp    %eax,%esi
40eb98:	77 41                	ja     0x40ebdb
40eb9a:	81 eb 00 ff ff ff    	sub    $0xffffff00,%ebx
40eba0:	89 55 d4             	mov    %edx,-0x2c(%ebp)
40eba3:	8d 81 80 00 00 00    	lea    0x80(%ecx),%eax
40eba9:	03 c6                	add    %esi,%eax
40ebab:	2b d1                	sub    %ecx,%edx
40ebad:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
40ebb0:	8d 34 73             	lea    (%ebx,%esi,2),%esi
40ebb3:	89 45 c0             	mov    %eax,-0x40(%ebp)
40ebb6:	8b d8                	mov    %eax,%ebx
40ebb8:	b8 00 80 00 00       	mov    $0x8000,%eax
40ebbd:	66 89 06             	mov    %ax,(%esi)
40ebc0:	8d 76 02             	lea    0x2(%esi),%esi
40ebc3:	88 0c 1a             	mov    %cl,(%edx,%ebx,1)
40ebc6:	88 0b                	mov    %cl,(%ebx)
40ebc8:	41                   	inc    %ecx
40ebc9:	0f b6 47 01          	movzbl 0x1(%edi),%eax
40ebcd:	43                   	inc    %ebx
40ebce:	3b c8                	cmp    %eax,%ecx
40ebd0:	7e e6                	jle    0x40ebb8
40ebd2:	8b 55 d8             	mov    -0x28(%ebp),%edx
40ebd5:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40ebd8:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40ebdb:	83 c7 02             	add    $0x2,%edi
40ebde:	80 3f 00             	cmpb   $0x0,(%edi)
40ebe1:	75 a3                	jne    0x40eb86
40ebe3:	33 db                	xor    %ebx,%ebx
40ebe5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40ebe8:	8b f8                	mov    %eax,%edi
40ebea:	6a 3f                	push   $0x3f
40ebec:	59                   	pop    %ecx
40ebed:	6a 1f                	push   $0x1f
40ebef:	8d b0 00 02 00 00    	lea    0x200(%eax),%esi
40ebf5:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ebf8:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ebfa:	59                   	pop    %ecx
40ebfb:	6a 1f                	push   $0x1f
40ebfd:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40ebff:	8d b2 00 01 00 00    	lea    0x100(%edx),%esi
40ec05:	8b fa                	mov    %edx,%edi
40ec07:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ec09:	59                   	pop    %ecx
40ec0a:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40ec0c:	a4                   	movsb  %ds:(%esi),%es:(%edi)
40ec0d:	8d b0 00 01 00 00    	lea    0x100(%eax),%esi
40ec13:	8b f8                	mov    %eax,%edi
40ec15:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ec17:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40ec19:	a4                   	movsb  %ds:(%esi),%es:(%edi)
40ec1a:	8b 75 cc             	mov    -0x34(%ebp),%esi
40ec1d:	8b 8e 8c 00 00 00    	mov    0x8c(%esi),%ecx
40ec23:	85 c9                	test   %ecx,%ecx
40ec25:	74 49                	je     0x40ec70
40ec27:	83 c8 ff             	or     $0xffffffff,%eax
40ec2a:	f0 0f c1 01          	lock xadd %eax,(%ecx)
40ec2e:	75 40                	jne    0x40ec70
40ec30:	8b 86 90 00 00 00    	mov    0x90(%esi),%eax
40ec36:	2d fe 00 00 00       	sub    $0xfe,%eax
40ec3b:	50                   	push   %eax
40ec3c:	e8 ca 44 00 00       	call   0x41310b
40ec41:	8b 86 94 00 00 00    	mov    0x94(%esi),%eax
40ec47:	bf 80 00 00 00       	mov    $0x80,%edi
40ec4c:	2b c7                	sub    %edi,%eax
40ec4e:	50                   	push   %eax
40ec4f:	e8 b7 44 00 00       	call   0x41310b
40ec54:	8b 86 98 00 00 00    	mov    0x98(%esi),%eax
40ec5a:	2b c7                	sub    %edi,%eax
40ec5c:	50                   	push   %eax
40ec5d:	e8 a9 44 00 00       	call   0x41310b
40ec62:	ff b6 8c 00 00 00    	push   0x8c(%esi)
40ec68:	e8 9e 44 00 00       	call   0x41310b
40ec6d:	83 c4 10             	add    $0x10,%esp
40ec70:	8b 45 d0             	mov    -0x30(%ebp),%eax
40ec73:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40ec79:	89 86 8c 00 00 00    	mov    %eax,0x8c(%esi)
40ec7f:	8b 45 bc             	mov    -0x44(%ebp),%eax
40ec82:	89 06                	mov    %eax,(%esi)
40ec84:	8b 45 b8             	mov    -0x48(%ebp),%eax
40ec87:	89 86 90 00 00 00    	mov    %eax,0x90(%esi)
40ec8d:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40ec90:	89 86 94 00 00 00    	mov    %eax,0x94(%esi)
40ec96:	8b 45 b0             	mov    -0x50(%ebp),%eax
40ec99:	89 86 98 00 00 00    	mov    %eax,0x98(%esi)
40ec9f:	8b 45 c8             	mov    -0x38(%ebp),%eax
40eca2:	89 46 04             	mov    %eax,0x4(%esi)
40eca5:	eb 24                	jmp    0x40eccb
40eca7:	ff 75 d0             	push   -0x30(%ebp)
40ecaa:	e8 5c 44 00 00       	call   0x41310b
40ecaf:	ff 75 e4             	push   -0x1c(%ebp)
40ecb2:	e8 54 44 00 00       	call   0x41310b
40ecb7:	57                   	push   %edi
40ecb8:	e8 4e 44 00 00       	call   0x41310b
40ecbd:	ff 75 e0             	push   -0x20(%ebp)
40ecc0:	e8 46 44 00 00       	call   0x41310b
40ecc5:	33 db                	xor    %ebx,%ebx
40ecc7:	83 c4 10             	add    $0x10,%esp
40ecca:	43                   	inc    %ebx
40eccb:	ff 75 dc             	push   -0x24(%ebp)
40ecce:	e8 38 44 00 00       	call   0x41310b
40ecd3:	59                   	pop    %ecx
40ecd4:	8b c3                	mov    %ebx,%eax
40ecd6:	eb 3c                	jmp    0x40ed14
40ecd8:	8b 86 8c 00 00 00    	mov    0x8c(%esi),%eax
40ecde:	85 c0                	test   %eax,%eax
40ece0:	74 03                	je     0x40ece5
40ece2:	f0 ff 08             	lock decl (%eax)
40ece5:	89 9e 8c 00 00 00    	mov    %ebx,0x8c(%esi)
40eceb:	33 c0                	xor    %eax,%eax
40eced:	89 9e 90 00 00 00    	mov    %ebx,0x90(%esi)
40ecf3:	c7 06 e0 61 42 00    	movl   $0x4261e0,(%esi)
40ecf9:	c7 86 94 00 00 00 60 	movl   $0x426460,0x94(%esi)
40ed00:	64 42 00
40ed03:	c7 86 98 00 00 00 e0 	movl   $0x4265e0,0x98(%esi)
40ed0a:	65 42 00
40ed0d:	c7 46 04 01 00 00 00 	movl   $0x1,0x4(%esi)
40ed14:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ed17:	5f                   	pop    %edi
40ed18:	5e                   	pop    %esi
40ed19:	33 cd                	xor    %ebp,%ecx
40ed1b:	5b                   	pop    %ebx
40ed1c:	e8 eb 86 ff ff       	call   0x40740c
40ed21:	c9                   	leave
40ed22:	c3                   	ret
40ed23:	8b ff                	mov    %edi,%edi
40ed25:	55                   	push   %ebp
40ed26:	8b ec                	mov    %esp,%ebp
40ed28:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40ed2c:	53                   	push   %ebx
40ed2d:	57                   	push   %edi
40ed2e:	74 3f                	je     0x40ed6f
40ed30:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ed33:	33 ff                	xor    %edi,%edi
40ed35:	8d 51 02             	lea    0x2(%ecx),%edx
40ed38:	66 8b 01             	mov    (%ecx),%ax
40ed3b:	83 c1 02             	add    $0x2,%ecx
40ed3e:	66 3b c7             	cmp    %di,%ax
40ed41:	75 f5                	jne    0x40ed38
40ed43:	2b ca                	sub    %edx,%ecx
40ed45:	d1 f9                	sar    $1,%ecx
40ed47:	8d 59 01             	lea    0x1(%ecx),%ebx
40ed4a:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40ed4d:	50                   	push   %eax
40ed4e:	e8 2a f7 ff ff       	call   0x40e47d
40ed53:	8b f8                	mov    %eax,%edi
40ed55:	59                   	pop    %ecx
40ed56:	85 ff                	test   %edi,%edi
40ed58:	74 15                	je     0x40ed6f
40ed5a:	ff 75 08             	push   0x8(%ebp)
40ed5d:	53                   	push   %ebx
40ed5e:	57                   	push   %edi
40ed5f:	e8 f9 9c 00 00       	call   0x418a5d
40ed64:	83 c4 0c             	add    $0xc,%esp
40ed67:	85 c0                	test   %eax,%eax
40ed69:	75 0a                	jne    0x40ed75
40ed6b:	8b c7                	mov    %edi,%eax
40ed6d:	eb 02                	jmp    0x40ed71
40ed6f:	33 c0                	xor    %eax,%eax
40ed71:	5f                   	pop    %edi
40ed72:	5b                   	pop    %ebx
40ed73:	5d                   	pop    %ebp
40ed74:	c3                   	ret
40ed75:	33 c0                	xor    %eax,%eax
40ed77:	50                   	push   %eax
40ed78:	50                   	push   %eax
40ed79:	50                   	push   %eax
40ed7a:	50                   	push   %eax
40ed7b:	50                   	push   %eax
40ed7c:	e8 2d e3 ff ff       	call   0x40d0ae
40ed81:	cc                   	int3
40ed82:	8b ff                	mov    %edi,%edi
40ed84:	55                   	push   %ebp
40ed85:	8b ec                	mov    %esp,%ebp
40ed87:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ed8a:	33 c0                	xor    %eax,%eax
40ed8c:	3b 0c c5 e8 68 42 00 	cmp    0x4268e8(,%eax,8),%ecx
40ed93:	74 27                	je     0x40edbc
40ed95:	40                   	inc    %eax
40ed96:	83 f8 2d             	cmp    $0x2d,%eax
40ed99:	72 f1                	jb     0x40ed8c
40ed9b:	8d 41 ed             	lea    -0x13(%ecx),%eax
40ed9e:	83 f8 11             	cmp    $0x11,%eax
40eda1:	77 05                	ja     0x40eda8
40eda3:	6a 0d                	push   $0xd
40eda5:	58                   	pop    %eax
40eda6:	5d                   	pop    %ebp
40eda7:	c3                   	ret
40eda8:	8d 81 44 ff ff ff    	lea    -0xbc(%ecx),%eax
40edae:	6a 0e                	push   $0xe
40edb0:	59                   	pop    %ecx
40edb1:	3b c8                	cmp    %eax,%ecx
40edb3:	1b c0                	sbb    %eax,%eax
40edb5:	23 c1                	and    %ecx,%eax
40edb7:	83 c0 08             	add    $0x8,%eax
40edba:	5d                   	pop    %ebp
40edbb:	c3                   	ret
40edbc:	8b 04 c5 ec 68 42 00 	mov    0x4268ec(,%eax,8),%eax
40edc3:	5d                   	pop    %ebp
40edc4:	c3                   	ret
40edc5:	8b ff                	mov    %edi,%edi
40edc7:	55                   	push   %ebp
40edc8:	8b ec                	mov    %esp,%ebp
40edca:	56                   	push   %esi
40edcb:	e8 18 00 00 00       	call   0x40ede8
40edd0:	8b 4d 08             	mov    0x8(%ebp),%ecx
40edd3:	51                   	push   %ecx
40edd4:	89 08                	mov    %ecx,(%eax)
40edd6:	e8 a7 ff ff ff       	call   0x40ed82
40eddb:	59                   	pop    %ecx
40eddc:	8b f0                	mov    %eax,%esi
40edde:	e8 18 00 00 00       	call   0x40edfb
40ede3:	89 30                	mov    %esi,(%eax)
40ede5:	5e                   	pop    %esi
40ede6:	5d                   	pop    %ebp
40ede7:	c3                   	ret
40ede8:	e8 3d 55 00 00       	call   0x41432a
40eded:	85 c0                	test   %eax,%eax
40edef:	75 06                	jne    0x40edf7
40edf1:	b8 78 31 43 00       	mov    $0x433178,%eax
40edf6:	c3                   	ret
40edf7:	83 c0 14             	add    $0x14,%eax
40edfa:	c3                   	ret
40edfb:	e8 2a 55 00 00       	call   0x41432a
40ee00:	85 c0                	test   %eax,%eax
40ee02:	75 06                	jne    0x40ee0a
40ee04:	b8 74 31 43 00       	mov    $0x433174,%eax
40ee09:	c3                   	ret
40ee0a:	83 c0 10             	add    $0x10,%eax
40ee0d:	c3                   	ret
40ee0e:	e8 7c 9d 00 00       	call   0x418b8f
40ee13:	85 c0                	test   %eax,%eax
40ee15:	74 08                	je     0x40ee1f
40ee17:	6a 16                	push   $0x16
40ee19:	e8 b6 9d 00 00       	call   0x418bd4
40ee1e:	59                   	pop    %ecx
40ee1f:	f6 05 7c 31 43 00 02 	testb  $0x2,0x43317c
40ee26:	74 22                	je     0x40ee4a
40ee28:	6a 17                	push   $0x17
40ee2a:	ff 15 70 40 42 00    	call   *0x424070
40ee30:	85 c0                	test   %eax,%eax
40ee32:	74 05                	je     0x40ee39
40ee34:	6a 07                	push   $0x7
40ee36:	59                   	pop    %ecx
40ee37:	cd 29                	int    $0x29
40ee39:	6a 01                	push   $0x1
40ee3b:	68 15 00 00 40       	push   $0x40000015
40ee40:	6a 03                	push   $0x3
40ee42:	e8 8e e0 ff ff       	call   0x40ced5