40fa7f:	cc                   	int3
40fa80:	55                   	push   %ebp
40fa81:	8b ec                	mov    %esp,%ebp
40fa83:	6a ff                	push   $0xffffffff
40fa85:	68 45 c7 43 00       	push   $0x43c745
40fa8a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40fa90:	50                   	push   %eax
40fa91:	83 ec 20             	sub    $0x20,%esp
40fa94:	53                   	push   %ebx
40fa95:	56                   	push   %esi
40fa96:	57                   	push   %edi
40fa97:	a1 14 50 45 00       	mov    0x455014,%eax
40fa9c:	33 c5                	xor    %ebp,%eax
40fa9e:	50                   	push   %eax
40fa9f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40faa2:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40faa8:	89 65 f0             	mov    %esp,-0x10(%ebp)
40faab:	8b d9                	mov    %ecx,%ebx
40faad:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40fab0:	33 f6                	xor    %esi,%esi
40fab2:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40fab5:	53                   	push   %ebx
40fab6:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40fab9:	e8 02 92 ff ff       	call   0x408cc0
40fabe:	89 75 fc             	mov    %esi,-0x4(%ebp)
40fac1:	80 7d e0 00          	cmpb   $0x0,-0x20(%ebp)
40fac5:	0f 84 d6 00 00 00    	je     0x40fba1
40facb:	8b 03                	mov    (%ebx),%eax
40facd:	8b 40 04             	mov    0x4(%eax),%eax
40fad0:	8b 44 18 30          	mov    0x30(%eax,%ebx,1),%eax
40fad4:	8b 78 04             	mov    0x4(%eax),%edi
40fad7:	89 7d d8             	mov    %edi,-0x28(%ebp)
40fada:	8b 07                	mov    (%edi),%eax
40fadc:	8b 70 04             	mov    0x4(%eax),%esi
40fadf:	8b ce                	mov    %esi,%ecx
40fae1:	ff 15 5c e2 43 00    	call   *0x43e25c
40fae7:	8b cf                	mov    %edi,%ecx
40fae9:	ff d6                	call   *%esi
40faeb:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40faee:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40faf2:	50                   	push   %eax
40faf3:	e8 58 a6 ff ff       	call   0x40a150
40faf8:	8b 7d d8             	mov    -0x28(%ebp),%edi
40fafb:	83 c4 04             	add    $0x4,%esp
40fafe:	89 45 e8             	mov    %eax,-0x18(%ebp)
40fb01:	85 ff                	test   %edi,%edi
40fb03:	74 29                	je     0x40fb2e
40fb05:	8b 17                	mov    (%edi),%edx
40fb07:	8b 72 08             	mov    0x8(%edx),%esi
40fb0a:	8b ce                	mov    %esi,%ecx
40fb0c:	ff 15 5c e2 43 00    	call   *0x43e25c
40fb12:	8b cf                	mov    %edi,%ecx
40fb14:	ff d6                	call   *%esi
40fb16:	8b f8                	mov    %eax,%edi
40fb18:	85 ff                	test   %edi,%edi
40fb1a:	74 12                	je     0x40fb2e
40fb1c:	8b 0f                	mov    (%edi),%ecx
40fb1e:	6a 01                	push   $0x1
40fb20:	8b 31                	mov    (%ecx),%esi
40fb22:	8b ce                	mov    %esi,%ecx
40fb24:	ff 15 5c e2 43 00    	call   *0x43e25c
40fb2a:	8b cf                	mov    %edi,%ecx
40fb2c:	ff d6                	call   *%esi
40fb2e:	ff 75 08             	push   0x8(%ebp)
40fb31:	8b 7d e8             	mov    -0x18(%ebp),%edi
40fb34:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40fb38:	8b 03                	mov    (%ebx),%eax
40fb3a:	8b 37                	mov    (%edi),%esi
40fb3c:	8b 48 04             	mov    0x4(%eax),%ecx
40fb3f:	03 cb                	add    %ebx,%ecx
40fb41:	c6 45 d4 00          	movb   $0x0,-0x2c(%ebp)
40fb45:	8b 76 20             	mov    0x20(%esi),%esi
40fb48:	0f b7 41 40          	movzwl 0x40(%ecx),%eax
40fb4c:	50                   	push   %eax
40fb4d:	51                   	push   %ecx
40fb4e:	ff 71 38             	push   0x38(%ecx)
40fb51:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40fb54:	8b ce                	mov    %esi,%ecx
40fb56:	ff 75 d4             	push   -0x2c(%ebp)
40fb59:	50                   	push   %eax
40fb5a:	ff 15 5c e2 43 00    	call   *0x43e25c
40fb60:	8b cf                	mov    %edi,%ecx
40fb62:	ff d6                	call   *%esi
40fb64:	33 f6                	xor    %esi,%esi
40fb66:	ba 04 00 00 00       	mov    $0x4,%edx
40fb6b:	80 7d d4 00          	cmpb   $0x0,-0x2c(%ebp)
40fb6f:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40fb76:	0f 45 f2             	cmovne %edx,%esi
40fb79:	eb 2b                	jmp    0x40fba6
40fb7b:	8b 55 ec             	mov    -0x14(%ebp),%edx
40fb7e:	6a 01                	push   $0x1
40fb80:	6a 04                	push   $0x4
40fb82:	8b 02                	mov    (%edx),%eax
40fb84:	8b 48 04             	mov    0x4(%eax),%ecx
40fb87:	03 ca                	add    %edx,%ecx
40fb89:	e8 22 92 ff ff       	call   0x408db0
40fb8e:	b8 94 fb 40 00       	mov    $0x40fb94,%eax
40fb93:	c3                   	ret
40fb94:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40fb97:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40fb9a:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40fba1:	ba 04 00 00 00       	mov    $0x4,%edx
40fba6:	8b 03                	mov    (%ebx),%eax
40fba8:	6a 00                	push   $0x0
40fbaa:	8b 48 04             	mov    0x4(%eax),%ecx
40fbad:	8b 44 19 0c          	mov    0xc(%ecx,%ebx,1),%eax
40fbb1:	03 cb                	add    %ebx,%ecx
40fbb3:	0b c6                	or     %esi,%eax
40fbb5:	33 f6                	xor    %esi,%esi
40fbb7:	39 71 38             	cmp    %esi,0x38(%ecx)
40fbba:	0f 45 d6             	cmovne %esi,%edx
40fbbd:	0b d0                	or     %eax,%edx
40fbbf:	52                   	push   %edx
40fbc0:	e8 3b 64 ff ff       	call   0x406000
40fbc5:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%ebp)
40fbcc:	e8 59 97 00 00       	call   0x41932a
40fbd1:	84 c0                	test   %al,%al
40fbd3:	75 08                	jne    0x40fbdd
40fbd5:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40fbd8:	e8 b3 a0 ff ff       	call   0x409c90
40fbdd:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40fbe1:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40fbe4:	8b 01                	mov    (%ecx),%eax
40fbe6:	8b 40 04             	mov    0x4(%eax),%eax
40fbe9:	8b 7c 08 38          	mov    0x38(%eax,%ecx,1),%edi
40fbed:	85 ff                	test   %edi,%edi
40fbef:	74 11                	je     0x40fc02
40fbf1:	8b 07                	mov    (%edi),%eax
40fbf3:	8b 70 08             	mov    0x8(%eax),%esi
40fbf6:	8b ce                	mov    %esi,%ecx
40fbf8:	ff 15 5c e2 43 00    	call   *0x43e25c
40fbfe:	8b cf                	mov    %edi,%ecx
40fc00:	ff d6                	call   *%esi
40fc02:	8b c3                	mov    %ebx,%eax
40fc04:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fc07:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fc0e:	59                   	pop    %ecx
40fc0f:	5f                   	pop    %edi
40fc10:	5e                   	pop    %esi
40fc11:	5b                   	pop    %ebx
40fc12:	8b e5                	mov    %ebp,%esp
40fc14:	5d                   	pop    %ebp
40fc15:	c2 04 00             	ret    $0x4
40fc18:	cc                   	int3
40fc19:	cc                   	int3
40fc1a:	cc                   	int3
40fc1b:	cc                   	int3
40fc1c:	cc                   	int3
40fc1d:	cc                   	int3
40fc1e:	cc                   	int3
40fc1f:	cc                   	int3
40fc20:	55                   	push   %ebp
40fc21:	8b ec                	mov    %esp,%ebp
40fc23:	6a ff                	push   $0xffffffff
40fc25:	68 8e c7 43 00       	push   $0x43c78e
40fc2a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40fc30:	50                   	push   %eax
40fc31:	83 ec 10             	sub    $0x10,%esp
40fc34:	53                   	push   %ebx
40fc35:	56                   	push   %esi
40fc36:	57                   	push   %edi
40fc37:	a1 14 50 45 00       	mov    0x455014,%eax
40fc3c:	33 c5                	xor    %ebp,%eax
40fc3e:	50                   	push   %eax
40fc3f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fc42:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40fc48:	8b f9                	mov    %ecx,%edi
40fc4a:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
40fc51:	33 c0                	xor    %eax,%eax
40fc53:	8b 75 08             	mov    0x8(%ebp),%esi
40fc56:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40fc5d:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
40fc64:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40fc6a:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40fc71:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40fc78:	66 89 06             	mov    %ax,(%esi)
40fc7b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fc7e:	0f 57 c0             	xorps  %xmm0,%xmm0
40fc81:	8b 57 3c             	mov    0x3c(%edi),%edx
40fc84:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fc87:	8b c2                	mov    %edx,%eax
40fc89:	24 22                	and    $0x22,%al
40fc8b:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40fc92:	66 0f d6 45 e4       	movq   %xmm0,-0x1c(%ebp)
40fc97:	3c 02                	cmp    $0x2,%al
40fc99:	74 1b                	je     0x40fcb6
40fc9b:	8b 47 20             	mov    0x20(%edi),%eax
40fc9e:	8b 08                	mov    (%eax),%ecx
40fca0:	85 c9                	test   %ecx,%ecx
40fca2:	74 12                	je     0x40fcb6
40fca4:	3b 4f 38             	cmp    0x38(%edi),%ecx
40fca7:	8b 47 10             	mov    0x10(%edi),%eax
40fcaa:	0f 42 4f 38          	cmovb  0x38(%edi),%ecx
40fcae:	8b 10                	mov    (%eax),%edx
40fcb0:	2b ca                	sub    %edx,%ecx
40fcb2:	d1 f9                	sar    $1,%ecx
40fcb4:	eb 28                	jmp    0x40fcde
40fcb6:	f6 c2 04             	test   $0x4,%dl
40fcb9:	75 1d                	jne    0x40fcd8
40fcbb:	8b 47 1c             	mov    0x1c(%edi),%eax
40fcbe:	8b 18                	mov    (%eax),%ebx
40fcc0:	85 db                	test   %ebx,%ebx
40fcc2:	74 14                	je     0x40fcd8
40fcc4:	8b 47 0c             	mov    0xc(%edi),%eax
40fcc7:	8b 10                	mov    (%eax),%edx
40fcc9:	8b 47 2c             	mov    0x2c(%edi),%eax
40fccc:	8b 08                	mov    (%eax),%ecx
40fcce:	03 c9                	add    %ecx,%ecx
40fcd0:	2b ca                	sub    %edx,%ecx
40fcd2:	03 cb                	add    %ebx,%ecx
40fcd4:	d1 f9                	sar    $1,%ecx
40fcd6:	eb 06                	jmp    0x40fcde
40fcd8:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40fcdb:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40fcde:	85 d2                	test   %edx,%edx
40fce0:	74 09                	je     0x40fceb
40fce2:	51                   	push   %ecx
40fce3:	52                   	push   %edx
40fce4:	8b ce                	mov    %esi,%ecx
40fce6:	e8 05 32 ff ff       	call   0x402ef0
40fceb:	8b c6                	mov    %esi,%eax
40fced:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fcf0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fcf7:	59                   	pop    %ecx
40fcf8:	5f                   	pop    %edi
40fcf9:	5e                   	pop    %esi
40fcfa:	5b                   	pop    %ebx
40fcfb:	8b e5                	mov    %ebp,%esp
40fcfd:	5d                   	pop    %ebp
40fcfe:	c2 04 00             	ret    $0x4
40fd01:	cc                   	int3
40fd02:	cc                   	int3
40fd03:	cc                   	int3
40fd04:	cc                   	int3
40fd05:	cc                   	int3
40fd06:	cc                   	int3
40fd07:	cc                   	int3
40fd08:	cc                   	int3
40fd09:	cc                   	int3
40fd0a:	cc                   	int3
40fd0b:	cc                   	int3
40fd0c:	cc                   	int3
40fd0d:	cc                   	int3
40fd0e:	cc                   	int3
40fd0f:	cc                   	int3
40fd10:	68 88 f0 44 00       	push   $0x44f088
40fd15:	e8 a0 91 00 00       	call   0x418eba
40fd1a:	cc                   	int3
40fd1b:	cc                   	int3
40fd1c:	cc                   	int3
40fd1d:	cc                   	int3
40fd1e:	cc                   	int3
40fd1f:	cc                   	int3
40fd20:	8b c1                	mov    %ecx,%eax
40fd22:	c3                   	ret
40fd23:	cc                   	int3
40fd24:	cc                   	int3
40fd25:	cc                   	int3
40fd26:	cc                   	int3
40fd27:	cc                   	int3
40fd28:	cc                   	int3
40fd29:	cc                   	int3
40fd2a:	cc                   	int3
40fd2b:	cc                   	int3
40fd2c:	cc                   	int3
40fd2d:	cc                   	int3
40fd2e:	cc                   	int3
40fd2f:	cc                   	int3
40fd30:	55                   	push   %ebp
40fd31:	8b ec                	mov    %esp,%ebp
40fd33:	51                   	push   %ecx
40fd34:	8b 45 08             	mov    0x8(%ebp),%eax
40fd37:	53                   	push   %ebx
40fd38:	8b d9                	mov    %ecx,%ebx
40fd3a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fd3d:	56                   	push   %esi
40fd3e:	8b 33                	mov    (%ebx),%esi
40fd40:	8b 76 04             	mov    0x4(%esi),%esi
40fd43:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40fd47:	75 33                	jne    0x40fd7c
40fd49:	57                   	push   %edi
40fd4a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
40fd50:	ff 76 08             	push   0x8(%esi)
40fd53:	8b cb                	mov    %ebx,%ecx
40fd55:	50                   	push   %eax
40fd56:	e8 b5 05 00 00       	call   0x410310
40fd5b:	8b fe                	mov    %esi,%edi
40fd5d:	8b 36                	mov    (%esi),%esi
40fd5f:	8d 4f 10             	lea    0x10(%edi),%ecx
40fd62:	e8 a9 0f 00 00       	call   0x410d10
40fd67:	6a 40                	push   $0x40
40fd69:	57                   	push   %edi
40fd6a:	e8 49 9e 00 00       	call   0x419bb8
40fd6f:	8b 45 fc             	mov    -0x4(%ebp),%eax
40fd72:	83 c4 08             	add    $0x8,%esp
40fd75:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40fd79:	74 d5                	je     0x40fd50
40fd7b:	5f                   	pop    %edi
40fd7c:	6a 40                	push   $0x40
40fd7e:	ff 33                	push   (%ebx)
40fd80:	e8 33 9e 00 00       	call   0x419bb8
40fd85:	83 c4 08             	add    $0x8,%esp
40fd88:	5e                   	pop    %esi
40fd89:	5b                   	pop    %ebx
40fd8a:	8b e5                	mov    %ebp,%esp
40fd8c:	5d                   	pop    %ebp
40fd8d:	c2 04 00             	ret    $0x4
40fd90:	55                   	push   %ebp
40fd91:	8b ec                	mov    %esp,%ebp
40fd93:	83 e4 f8             	and    $0xfffffff8,%esp
40fd96:	81 ec 14 01 00 00    	sub    $0x114,%esp
40fd9c:	a1 14 50 45 00       	mov    0x455014,%eax
40fda1:	33 c4                	xor    %esp,%eax
40fda3:	89 84 24 10 01 00 00 	mov    %eax,0x110(%esp)
40fdaa:	8b 45 0c             	mov    0xc(%ebp),%eax
40fdad:	53                   	push   %ebx
40fdae:	8b 5d 10             	mov    0x10(%ebp),%ebx
40fdb1:	89 44 24 08          	mov    %eax,0x8(%esp)
40fdb5:	56                   	push   %esi
40fdb6:	8b f2                	mov    %edx,%esi
40fdb8:	57                   	push   %edi
40fdb9:	8b f9                	mov    %ecx,%edi
40fdbb:	85 db                	test   %ebx,%ebx
40fdbd:	0f 84 03 01 00 00    	je     0x40fec6
40fdc3:	85 f6                	test   %esi,%esi
40fdc5:	0f 84 fb 00 00 00    	je     0x40fec6
40fdcb:	68 00 01 00 00       	push   $0x100
40fdd0:	8d 44 24 1c          	lea    0x1c(%esp),%eax
40fdd4:	6a 00                	push   $0x0
40fdd6:	50                   	push   %eax
40fdd7:	e8 34 be 00 00       	call   0x41bc10
40fddc:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40fde0:	83 c4 0c             	add    $0xc,%esp
40fde3:	8b c8                	mov    %eax,%ecx
40fde5:	c7 44 24 14 00 01 00 	movl   $0x100,0x14(%esp)
40fdec:	00
40fded:	8d 14 58             	lea    (%eax,%ebx,2),%edx
40fdf0:	3b c2                	cmp    %edx,%eax
40fdf2:	74 19                	je     0x40fe0d
40fdf4:	0f b7 01             	movzwl (%ecx),%eax
40fdf7:	66 3b 44 24 14       	cmp    0x14(%esp),%ax
40fdfc:	73 3e                	jae    0x40fe3c
40fdfe:	0f b6 c0             	movzbl %al,%eax
40fe01:	83 c1 02             	add    $0x2,%ecx
40fe04:	c6 44 04 18 01       	movb   $0x1,0x18(%esp,%eax,1)
40fe09:	3b ca                	cmp    %edx,%ecx
40fe0b:	75 e7                	jne    0x40fdf4
40fe0d:	8b 54 24 14          	mov    0x14(%esp),%edx
40fe11:	8d 46 ff             	lea    -0x1(%esi),%eax
40fe14:	83 c9 ff             	or     $0xffffffff,%ecx