41fa69:	50                   	push   %eax
41fa6a:	8d 45 f8             	lea    -0x8(%ebp),%eax
41fa6d:	50                   	push   %eax
41fa6e:	8d 45 fc             	lea    -0x4(%ebp),%eax
41fa71:	50                   	push   %eax
41fa72:	33 c0                	xor    %eax,%eax
41fa74:	50                   	push   %eax
41fa75:	8d 04 3f             	lea    (%edi,%edi,1),%eax
41fa78:	50                   	push   %eax
41fa79:	51                   	push   %ecx
41fa7a:	e8 8c 00 00 00       	call   0x41fb0b
41fa7f:	8b 5d f8             	mov    -0x8(%ebp),%ebx
41fa82:	85 f6                	test   %esi,%esi
41fa84:	79 08                	jns    0x41fa8e
41fa86:	81 fe 7a 00 07 80    	cmp    $0x8007007a,%esi
41fa8c:	75 15                	jne    0x41faa3
41fa8e:	8b 55 fc             	mov    -0x4(%ebp),%edx
41fa91:	8b 45 14             	mov    0x14(%ebp),%eax
41fa94:	85 c0                	test   %eax,%eax
41fa96:	74 02                	je     0x41fa9a
41fa98:	89 10                	mov    %edx,(%eax)
41fa9a:	8b 45 18             	mov    0x18(%ebp),%eax
41fa9d:	85 c0                	test   %eax,%eax
41fa9f:	74 02                	je     0x41faa3
41faa1:	89 18                	mov    %ebx,(%eax)
41faa3:	5f                   	pop    %edi
41faa4:	8b c6                	mov    %esi,%eax
41faa6:	5e                   	pop    %esi
41faa7:	5b                   	pop    %ebx
41faa8:	8b e5                	mov    %ebp,%esp
41faaa:	5d                   	pop    %ebp
41faab:	c2 18 00             	ret    $0x18
41faae:	55                   	push   %ebp
41faaf:	8b ec                	mov    %esp,%ebp
41fab1:	8b 55 0c             	mov    0xc(%ebp),%edx
41fab4:	8b 45 08             	mov    0x8(%ebp),%eax
41fab7:	56                   	push   %esi
41fab8:	33 f6                	xor    %esi,%esi
41faba:	8b ce                	mov    %esi,%ecx
41fabc:	85 d2                	test   %edx,%edx
41fabe:	74 2d                	je     0x41faed
41fac0:	53                   	push   %ebx
41fac1:	8b 5d 18             	mov    0x18(%ebp),%ebx
41fac4:	57                   	push   %edi
41fac5:	8b 7d 14             	mov    0x14(%ebp),%edi
41fac8:	2b f8                	sub    %eax,%edi
41faca:	85 db                	test   %ebx,%ebx
41facc:	74 16                	je     0x41fae4
41face:	0f b7 34 07          	movzwl (%edi,%eax,1),%esi
41fad2:	66 85 f6             	test   %si,%si
41fad5:	74 0d                	je     0x41fae4
41fad7:	66 89 30             	mov    %si,(%eax)
41fada:	83 c0 02             	add    $0x2,%eax
41fadd:	4b                   	dec    %ebx
41fade:	41                   	inc    %ecx
41fadf:	83 ea 01             	sub    $0x1,%edx
41fae2:	75 e6                	jne    0x41faca
41fae4:	6a 00                	push   $0x0
41fae6:	5e                   	pop    %esi
41fae7:	5f                   	pop    %edi
41fae8:	5b                   	pop    %ebx
41fae9:	85 d2                	test   %edx,%edx
41faeb:	75 09                	jne    0x41faf6
41faed:	83 e8 02             	sub    $0x2,%eax
41faf0:	be 7a 00 07 80       	mov    $0x8007007a,%esi
41faf5:	49                   	dec    %ecx
41faf6:	33 d2                	xor    %edx,%edx
41faf8:	66 89 10             	mov    %dx,(%eax)
41fafb:	8b 45 10             	mov    0x10(%ebp),%eax
41fafe:	85 c0                	test   %eax,%eax
41fb00:	74 02                	je     0x41fb04
41fb02:	89 08                	mov    %ecx,(%eax)
41fb04:	8b c6                	mov    %esi,%eax
41fb06:	5e                   	pop    %esi
41fb07:	5d                   	pop    %ebp
41fb08:	c2 14 00             	ret    $0x14
41fb0b:	55                   	push   %ebp
41fb0c:	8b ec                	mov    %esp,%ebp
41fb0e:	8b 45 1c             	mov    0x1c(%ebp),%eax
41fb11:	53                   	push   %ebx
41fb12:	8b 5d 08             	mov    0x8(%ebp),%ebx
41fb15:	56                   	push   %esi
41fb16:	57                   	push   %edi
41fb17:	8b 7d 0c             	mov    0xc(%ebp),%edi
41fb1a:	d1 ef                	shr    $1,%edi
41fb1c:	74 23                	je     0x41fb41
41fb1e:	a9 00 10 00 00       	test   $0x1000,%eax
41fb23:	74 1c                	je     0x41fb41
41fb25:	8b 4d 10             	mov    0x10(%ebp),%ecx
41fb28:	8b 45 14             	mov    0x14(%ebp),%eax
41fb2b:	8d 14 4b             	lea    (%ebx,%ecx,2),%edx
41fb2e:	89 10                	mov    %edx,(%eax)
41fb30:	8b c7                	mov    %edi,%eax
41fb32:	2b c1                	sub    %ecx,%eax
41fb34:	8b 4d 18             	mov    0x18(%ebp),%ecx
41fb37:	89 01                	mov    %eax,(%ecx)
41fb39:	33 c0                	xor    %eax,%eax
41fb3b:	66 89 02             	mov    %ax,(%edx)
41fb3e:	8b 45 1c             	mov    0x1c(%ebp),%eax
41fb41:	a9 00 04 00 00       	test   $0x400,%eax
41fb46:	74 42                	je     0x41fb8a
41fb48:	ff 75 0c             	push   0xc(%ebp)
41fb4b:	0f b6 f0             	movzbl %al,%esi
41fb4e:	56                   	push   %esi
41fb4f:	53                   	push   %ebx
41fb50:	e8 1b fb 00 00       	call   0x42f670
41fb55:	83 c4 0c             	add    $0xc,%esp
41fb58:	85 f6                	test   %esi,%esi
41fb5a:	75 0f                	jne    0x41fb6b
41fb5c:	8b 55 14             	mov    0x14(%ebp),%edx
41fb5f:	8b 4d 18             	mov    0x18(%ebp),%ecx
41fb62:	89 1a                	mov    %ebx,(%edx)
41fb64:	89 39                	mov    %edi,(%ecx)
41fb66:	8b 45 1c             	mov    0x1c(%ebp),%eax
41fb69:	eb 25                	jmp    0x41fb90
41fb6b:	85 ff                	test   %edi,%edi
41fb6d:	74 35                	je     0x41fba4
41fb6f:	8b 55 14             	mov    0x14(%ebp),%edx
41fb72:	8d 43 fe             	lea    -0x2(%ebx),%eax
41fb75:	8b 4d 18             	mov    0x18(%ebp),%ecx
41fb78:	8d 04 78             	lea    (%eax,%edi,2),%eax
41fb7b:	33 f6                	xor    %esi,%esi
41fb7d:	89 02                	mov    %eax,(%edx)
41fb7f:	c7 01 01 00 00 00    	movl   $0x1,(%ecx)
41fb85:	66 89 30             	mov    %si,(%eax)
41fb88:	eb dc                	jmp    0x41fb66
41fb8a:	8b 4d 18             	mov    0x18(%ebp),%ecx
41fb8d:	8b 55 14             	mov    0x14(%ebp),%edx
41fb90:	85 ff                	test   %edi,%edi
41fb92:	74 10                	je     0x41fba4
41fb94:	a9 00 08 00 00       	test   $0x800,%eax
41fb99:	74 09                	je     0x41fba4
41fb9b:	89 1a                	mov    %ebx,(%edx)
41fb9d:	33 c0                	xor    %eax,%eax
41fb9f:	89 39                	mov    %edi,(%ecx)
41fba1:	66 89 03             	mov    %ax,(%ebx)
41fba4:	5f                   	pop    %edi
41fba5:	5e                   	pop    %esi
41fba6:	33 c0                	xor    %eax,%eax
41fba8:	5b                   	pop    %ebx
41fba9:	5d                   	pop    %ebp
41fbaa:	c2 18 00             	ret    $0x18
41fbad:	55                   	push   %ebp
41fbae:	8b ec                	mov    %esp,%ebp
41fbb0:	51                   	push   %ecx
41fbb1:	8b 55 10             	mov    0x10(%ebp),%edx
41fbb4:	33 c9                	xor    %ecx,%ecx
41fbb6:	56                   	push   %esi
41fbb7:	57                   	push   %edi
41fbb8:	89 4d fc             	mov    %ecx,-0x4(%ebp)
41fbbb:	be 84 9d 45 00       	mov    $0x459d84,%esi
41fbc0:	8b 04 8e             	mov    (%esi,%ecx,4),%eax
41fbc3:	3b 04 8a             	cmp    (%edx,%ecx,4),%eax
41fbc6:	75 7a                	jne    0x41fc42
41fbc8:	41                   	inc    %ecx
41fbc9:	83 f9 04             	cmp    $0x4,%ecx
41fbcc:	75 f2                	jne    0x41fbc0
41fbce:	8b 4d 0c             	mov    0xc(%ebp),%ecx
41fbd1:	85 c9                	test   %ecx,%ecx
41fbd3:	75 26                	jne    0x41fbfb
41fbd5:	be 05 40 00 80       	mov    $0x80004005,%esi
41fbda:	56                   	push   %esi
41fbdb:	68 7f 03 00 00       	push   $0x37f
41fbe0:	68 94 9d 45 00       	push   $0x459d94
41fbe5:	8b fe                	mov    %esi,%edi
41fbe7:	e8 e7 3b fe ff       	call   0x4037d3
41fbec:	68 10 a4 45 00       	push   $0x45a410
41fbf1:	56                   	push   %esi
41fbf2:	e8 38 05 02 00       	call   0x44012f
41fbf7:	59                   	pop    %ecx
41fbf8:	59                   	pop    %ecx
41fbf9:	eb 4c                	jmp    0x41fc47
41fbfb:	8b 55 14             	mov    0x14(%ebp),%edx
41fbfe:	85 d2                	test   %edx,%edx
41fc00:	75 1e                	jne    0x41fc20
41fc02:	be 05 40 00 80       	mov    $0x80004005,%esi
41fc07:	56                   	push   %esi
41fc08:	68 80 03 00 00       	push   $0x380
41fc0d:	68 94 9d 45 00       	push   $0x459d94
41fc12:	8b fe                	mov    %esi,%edi
41fc14:	e8 ba 3b fe ff       	call   0x4037d3
41fc19:	68 cc a4 45 00       	push   $0x45a4cc
41fc1e:	eb d1                	jmp    0x41fbf1
41fc20:	8b 01                	mov    (%ecx),%eax
41fc22:	8d 75 fc             	lea    -0x4(%ebp),%esi
41fc25:	56                   	push   %esi
41fc26:	6a 04                	push   $0x4
41fc28:	ff 32                	push   (%edx)
41fc2a:	51                   	push   %ecx
41fc2b:	ff 50 0c             	call   *0xc(%eax)
41fc2e:	8b f8                	mov    %eax,%edi
41fc30:	85 ff                	test   %edi,%edi
41fc32:	79 13                	jns    0x41fc47
41fc34:	be 05 40 00 80       	mov    $0x80004005,%esi
41fc39:	8b fe                	mov    %esi,%edi
41fc3b:	68 f8 a4 45 00       	push   $0x45a4f8
41fc40:	eb af                	jmp    0x41fbf1
41fc42:	bf 02 40 00 80       	mov    $0x80004002,%edi
41fc47:	8b c7                	mov    %edi,%eax
41fc49:	5f                   	pop    %edi
41fc4a:	5e                   	pop    %esi
41fc4b:	8b e5                	mov    %ebp,%esp
41fc4d:	5d                   	pop    %ebp
41fc4e:	c2 10 00             	ret    $0x10
41fc51:	55                   	push   %ebp
41fc52:	8b ec                	mov    %esp,%ebp
41fc54:	56                   	push   %esi
41fc55:	57                   	push   %edi
41fc56:	6a 14                	push   $0x14
41fc58:	e8 57 e4 00 00       	call   0x42e0b4
41fc5d:	59                   	pop    %ecx
41fc5e:	85 c0                	test   %eax,%eax
41fc60:	74 11                	je     0x41fc73
41fc62:	ff 75 0c             	push   0xc(%ebp)
41fc65:	8b c8                	mov    %eax,%ecx
41fc67:	ff 75 08             	push   0x8(%ebp)
41fc6a:	e8 c2 ec ff ff       	call   0x41e931
41fc6f:	8b f8                	mov    %eax,%edi
41fc71:	eb 02                	jmp    0x41fc75
41fc73:	33 ff                	xor    %edi,%edi
41fc75:	85 ff                	test   %edi,%edi
41fc77:	75 24                	jne    0x41fc9d
41fc79:	be 0e 00 07 80       	mov    $0x8007000e,%esi
41fc7e:	56                   	push   %esi
41fc7f:	68 b8 03 00 00       	push   $0x3b8
41fc84:	68 94 9d 45 00       	push   $0x459d94
41fc89:	e8 45 3b fe ff       	call   0x4037d3
41fc8e:	68 50 a5 45 00       	push   $0x45a550
41fc93:	56                   	push   %esi
41fc94:	e8 96 04 02 00       	call   0x44012f
41fc99:	59                   	pop    %ecx
41fc9a:	59                   	pop    %ecx
41fc9b:	eb 26                	jmp    0x41fcc3
41fc9d:	ff 75 10             	push   0x10(%ebp)
41fca0:	8b 07                	mov    (%edi),%eax
41fca2:	68 84 9d 45 00       	push   $0x459d84
41fca7:	57                   	push   %edi
41fca8:	ff 10                	call   *(%eax)
41fcaa:	8b f0                	mov    %eax,%esi
41fcac:	85 f6                	test   %esi,%esi
41fcae:	79 0d                	jns    0x41fcbd
41fcb0:	68 90 a5 45 00       	push   $0x45a590
41fcb5:	56                   	push   %esi
41fcb6:	e8 74 04 02 00       	call   0x44012f
41fcbb:	59                   	pop    %ecx
41fcbc:	59                   	pop    %ecx
41fcbd:	8b 07                	mov    (%edi),%eax
41fcbf:	57                   	push   %edi
41fcc0:	ff 50 08             	call   *0x8(%eax)
41fcc3:	5f                   	pop    %edi
41fcc4:	8b c6                	mov    %esi,%eax
41fcc6:	5e                   	pop    %esi
41fcc7:	5d                   	pop    %ebp
41fcc8:	c2 0c 00             	ret    $0xc
41fccb:	55                   	push   %ebp
41fccc:	8b ec                	mov    %esp,%ebp
41fcce:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
41fcd2:	6a 00                	push   $0x0
41fcd4:	6a 10                	push   $0x10
41fcd6:	ff 75 08             	push   0x8(%ebp)
41fcd9:	74 07                	je     0x41fce2
41fcdb:	e8 1b fc 01 00       	call   0x43f8fb
41fce0:	eb 05                	jmp    0x41fce7
41fce2:	e8 ae fb 01 00       	call   0x43f895
41fce7:	5d                   	pop    %ebp
41fce8:	c2 08 00             	ret    $0x8
41fceb:	55                   	push   %ebp
41fcec:	8b ec                	mov    %esp,%ebp
41fcee:	53                   	push   %ebx
41fcef:	8b 5d 08             	mov    0x8(%ebp),%ebx
41fcf2:	56                   	push   %esi
41fcf3:	33 f6                	xor    %esi,%esi
41fcf5:	39 33                	cmp    %esi,(%ebx)
41fcf7:	0f 84 9d 00 00 00    	je     0x41fd9a
41fcfd:	57                   	push   %edi
41fcfe:	ff 33                	push   (%ebx)
41fd00:	e8 4c 3e fe ff       	call   0x403b51
41fd05:	8b f8                	mov    %eax,%edi
41fd07:	83 ff ff             	cmp    $0xffffffff,%edi
41fd0a:	75 0c                	jne    0x41fd18
41fd0c:	be 57 00 07 80       	mov    $0x80070057,%esi
41fd11:	68 a4 a6 45 00       	push   $0x45a6a4
41fd16:	eb 59                	jmp    0x41fd71
41fd18:	8b 4d 0c             	mov    0xc(%ebp),%ecx
41fd1b:	83 e0 0f             	and    $0xf,%eax
41fd1e:	f7 d9                	neg    %ecx
41fd20:	6a 10                	push   $0x10
41fd22:	1b c9                	sbb    %ecx,%ecx
41fd24:	33 d2                	xor    %edx,%edx
41fd26:	23 c8                	and    %eax,%ecx
41fd28:	58                   	pop    %eax
41fd29:	2b c1                	sub    %ecx,%eax
41fd2b:	3b d1                	cmp    %ecx,%edx
41fd2d:	1b c9                	sbb    %ecx,%ecx
41fd2f:	23 c8                	and    %eax,%ecx
41fd31:	8b c1                	mov    %ecx,%eax
41fd33:	f7 d0                	not    %eax
41fd35:	3b c7                	cmp    %edi,%eax
41fd37:	73 16                	jae    0x41fd4f
41fd39:	57                   	push   %edi
41fd3a:	be 0d 00 07 80       	mov    $0x8007000d,%esi
41fd3f:	68 cc a6 45 00       	push   $0x45a6cc
41fd44:	56                   	push   %esi
41fd45:	e8 e5 03 02 00       	call   0x44012f
41fd4a:	83 c4 0c             	add    $0xc,%esp
41fd4d:	eb 4a                	jmp    0x41fd99
41fd4f:	85 c9                	test   %ecx,%ecx
41fd51:	74 2d                	je     0x41fd80
41fd53:	21 55 08             	and    %edx,0x8(%ebp)
41fd56:	8d 45 08             	lea    0x8(%ebp),%eax
41fd59:	50                   	push   %eax
41fd5a:	6a 01                	push   $0x1
41fd5c:	03 f9                	add    %ecx,%edi
41fd5e:	57                   	push   %edi
41fd5f:	ff 33                	push   (%ebx)
41fd61:	e8 31 3d fe ff       	call   0x403a97
41fd66:	8b f0                	mov    %eax,%esi
41fd68:	85 f6                	test   %esi,%esi
41fd6a:	79 0f                	jns    0x41fd7b
41fd6c:	68 ec a6 45 00       	push   $0x45a6ec
41fd71:	56                   	push   %esi
41fd72:	e8 b8 03 02 00       	call   0x44012f
41fd77:	59                   	pop    %ecx
41fd78:	59                   	pop    %ecx
41fd79:	eb 1e                	jmp    0x41fd99
41fd7b:	8b 45 08             	mov    0x8(%ebp),%eax
41fd7e:	89 03                	mov    %eax,(%ebx)
41fd80:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
41fd84:	6a 00                	push   $0x0
41fd86:	57                   	push   %edi
41fd87:	ff 33                	push   (%ebx)
41fd89:	74 07                	je     0x41fd92
41fd8b:	e8 6b fb 01 00       	call   0x43f8fb
41fd90:	eb 05                	jmp    0x41fd97
41fd92:	e8 fe fa 01 00       	call   0x43f895
41fd97:	8b f0                	mov    %eax,%esi
41fd99:	5f                   	pop    %edi
41fd9a:	8b c6                	mov    %esi,%eax
41fd9c:	5e                   	pop    %esi
41fd9d:	5b                   	pop    %ebx
41fd9e:	5d                   	pop    %ebp
41fd9f:	c2 08 00             	ret    $0x8
41fda2:	55                   	push   %ebp
41fda3:	8b ec                	mov    %esp,%ebp
41fda5:	53                   	push   %ebx
41fda6:	56                   	push   %esi
41fda7:	57                   	push   %edi
41fda8:	8b 7d 08             	mov    0x8(%ebp),%edi
41fdab:	33 db                	xor    %ebx,%ebx
41fdad:	8b f3                	mov    %ebx,%esi