40faab:	6a 00                	push   $0x0
40faad:	8b 53 3c             	mov    0x3c(%ebx),%edx
40fab0:	52                   	push   %edx
40fab1:	e8 da f8 ff ff       	call   0x40f390
40fab6:	83 c4 0c             	add    $0xc,%esp
40fab9:	8b c6                	mov    %esi,%eax
40fabb:	e8 90 fd ff ff       	call   0x40f850
40fac0:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
40fac4:	75 0b                	jne    0x40fad1
40fac6:	c7 43 20 ff ff ff ff 	movl   $0xffffffff,0x20(%ebx)
40facd:	33 c0                	xor    %eax,%eax
40facf:	eb 50                	jmp    0x40fb21
40fad1:	83 ff 04             	cmp    $0x4,%edi
40fad4:	74 04                	je     0x40fada
40fad6:	33 c0                	xor    %eax,%eax
40fad8:	eb 47                	jmp    0x40fb21
40fada:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
40fade:	74 07                	je     0x40fae7
40fae0:	b8 01 00 00 00       	mov    $0x1,%eax
40fae5:	eb 3a                	jmp    0x40fb21
40fae7:	8b 56 30             	mov    0x30(%esi),%edx
40faea:	8b c3                	mov    %ebx,%eax
40faec:	c1 ea 10             	shr    $0x10,%edx
40faef:	e8 34 fd ff ff       	call   0x40f828
40faf4:	8b 56 30             	mov    0x30(%esi),%edx
40faf7:	8b c3                	mov    %ebx,%eax
40faf9:	81 e2 ff ff 00 00    	and    $0xffff,%edx
40faff:	e8 24 fd ff ff       	call   0x40f828
40fb04:	8b c6                	mov    %esi,%eax
40fb06:	e8 45 fd ff ff       	call   0x40f850
40fb0b:	c7 43 18 ff ff ff ff 	movl   $0xffffffff,0x18(%ebx)
40fb12:	83 7b 14 00          	cmpl   $0x0,0x14(%ebx)
40fb16:	74 04                	je     0x40fb1c
40fb18:	33 c0                	xor    %eax,%eax
40fb1a:	eb 05                	jmp    0x40fb21
40fb1c:	b8 01 00 00 00       	mov    $0x1,%eax
40fb21:	5a                   	pop    %edx
40fb22:	5d                   	pop    %ebp
40fb23:	5f                   	pop    %edi
40fb24:	5e                   	pop    %esi
40fb25:	5b                   	pop    %ebx
40fb26:	c3                   	ret
40fb27:	90                   	nop
40fb28:	53                   	push   %ebx
40fb29:	56                   	push   %esi
40fb2a:	8b d8                	mov    %eax,%ebx
40fb2c:	85 db                	test   %ebx,%ebx
40fb2e:	74 06                	je     0x40fb36
40fb30:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
40fb34:	75 08                	jne    0x40fb3e
40fb36:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40fb3b:	5e                   	pop    %esi
40fb3c:	5b                   	pop    %ebx
40fb3d:	c3                   	ret
40fb3e:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fb41:	8b 72 04             	mov    0x4(%edx),%esi
40fb44:	83 fe 2a             	cmp    $0x2a,%esi
40fb47:	74 15                	je     0x40fb5e
40fb49:	83 fe 71             	cmp    $0x71,%esi
40fb4c:	74 10                	je     0x40fb5e
40fb4e:	81 fe 9a 02 00 00    	cmp    $0x29a,%esi
40fb54:	74 08                	je     0x40fb5e
40fb56:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40fb5b:	5e                   	pop    %esi
40fb5c:	5b                   	pop    %ebx
40fb5d:	c3                   	ret
40fb5e:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fb61:	8b 42 08             	mov    0x8(%edx),%eax
40fb64:	85 c0                	test   %eax,%eax
40fb66:	74 08                	je     0x40fb70
40fb68:	8b d0                	mov    %eax,%edx
40fb6a:	8b 43 28             	mov    0x28(%ebx),%eax
40fb6d:	ff 53 24             	call   *0x24(%ebx)
40fb70:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fb73:	8b 42 3c             	mov    0x3c(%edx),%eax
40fb76:	85 c0                	test   %eax,%eax
40fb78:	74 08                	je     0x40fb82
40fb7a:	8b d0                	mov    %eax,%edx
40fb7c:	8b 43 28             	mov    0x28(%ebx),%eax
40fb7f:	ff 53 24             	call   *0x24(%ebx)
40fb82:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fb85:	8b 42 38             	mov    0x38(%edx),%eax
40fb88:	85 c0                	test   %eax,%eax
40fb8a:	74 08                	je     0x40fb94
40fb8c:	8b d0                	mov    %eax,%edx
40fb8e:	8b 43 28             	mov    0x28(%ebx),%eax
40fb91:	ff 53 24             	call   *0x24(%ebx)
40fb94:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fb97:	8b 42 30             	mov    0x30(%edx),%eax
40fb9a:	85 c0                	test   %eax,%eax
40fb9c:	74 08                	je     0x40fba6
40fb9e:	8b d0                	mov    %eax,%edx
40fba0:	8b 43 28             	mov    0x28(%ebx),%eax
40fba3:	ff 53 24             	call   *0x24(%ebx)
40fba6:	8b 53 1c             	mov    0x1c(%ebx),%edx
40fba9:	8b 43 28             	mov    0x28(%ebx),%eax
40fbac:	ff 53 24             	call   *0x24(%ebx)
40fbaf:	33 d2                	xor    %edx,%edx
40fbb1:	83 fe 71             	cmp    $0x71,%esi
40fbb4:	89 53 1c             	mov    %edx,0x1c(%ebx)
40fbb7:	75 07                	jne    0x40fbc0
40fbb9:	b8 fd ff ff ff       	mov    $0xfffffffd,%eax
40fbbe:	eb 02                	jmp    0x40fbc2
40fbc0:	33 c0                	xor    %eax,%eax
40fbc2:	5e                   	pop    %esi
40fbc3:	5b                   	pop    %ebx
40fbc4:	c3                   	ret
40fbc5:	90                   	nop
40fbc6:	90                   	nop
40fbc7:	90                   	nop
40fbc8:	53                   	push   %ebx
40fbc9:	56                   	push   %esi
40fbca:	57                   	push   %edi
40fbcb:	55                   	push   %ebp
40fbcc:	51                   	push   %ecx
40fbcd:	89 14 24             	mov    %edx,(%esp)
40fbd0:	8b f0                	mov    %eax,%esi
40fbd2:	83 3c 24 00          	cmpl   $0x0,(%esp)
40fbd6:	74 0d                	je     0x40fbe5
40fbd8:	85 f6                	test   %esi,%esi
40fbda:	74 09                	je     0x40fbe5
40fbdc:	8b 04 24             	mov    (%esp),%eax
40fbdf:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
40fbe3:	75 0a                	jne    0x40fbef
40fbe5:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40fbea:	e9 6a 01 00 00       	jmp    0x40fd59
40fbef:	8b 14 24             	mov    (%esp),%edx
40fbf2:	8b 04 24             	mov    (%esp),%eax
40fbf5:	b9 0e 00 00 00       	mov    $0xe,%ecx
40fbfa:	8b 7a 1c             	mov    0x1c(%edx),%edi
40fbfd:	56                   	push   %esi
40fbfe:	57                   	push   %edi
40fbff:	8b fe                	mov    %esi,%edi
40fc01:	8b f0                	mov    %eax,%esi
40fc03:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40fc05:	5f                   	pop    %edi
40fc06:	5e                   	pop    %esi
40fc07:	b9 b8 16 00 00       	mov    $0x16b8,%ecx
40fc0c:	ba 01 00 00 00       	mov    $0x1,%edx
40fc11:	8b 46 28             	mov    0x28(%esi),%eax
40fc14:	ff 56 20             	call   *0x20(%esi)
40fc17:	8b d8                	mov    %eax,%ebx
40fc19:	85 db                	test   %ebx,%ebx
40fc1b:	75 0a                	jne    0x40fc27
40fc1d:	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
40fc22:	e9 32 01 00 00       	jmp    0x40fd59
40fc27:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40fc2a:	56                   	push   %esi
40fc2b:	57                   	push   %edi
40fc2c:	8b f7                	mov    %edi,%esi
40fc2e:	8b fb                	mov    %ebx,%edi
40fc30:	b9 ae 05 00 00       	mov    $0x5ae,%ecx
40fc35:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40fc37:	5f                   	pop    %edi
40fc38:	5e                   	pop    %esi
40fc39:	89 33                	mov    %esi,(%ebx)
40fc3b:	b9 02 00 00 00       	mov    $0x2,%ecx
40fc40:	8b 53 24             	mov    0x24(%ebx),%edx
40fc43:	8b 46 28             	mov    0x28(%esi),%eax
40fc46:	ff 56 20             	call   *0x20(%esi)
40fc49:	89 43 30             	mov    %eax,0x30(%ebx)
40fc4c:	b9 02 00 00 00       	mov    $0x2,%ecx
40fc51:	8b 53 24             	mov    0x24(%ebx),%edx
40fc54:	8b 46 28             	mov    0x28(%esi),%eax
40fc57:	ff 56 20             	call   *0x20(%esi)
40fc5a:	89 43 38             	mov    %eax,0x38(%ebx)
40fc5d:	b9 02 00 00 00       	mov    $0x2,%ecx
40fc62:	8b 53 44             	mov    0x44(%ebx),%edx
40fc65:	8b 46 28             	mov    0x28(%esi),%eax
40fc68:	ff 56 20             	call   *0x20(%esi)
40fc6b:	89 43 3c             	mov    %eax,0x3c(%ebx)
40fc6e:	b9 04 00 00 00       	mov    $0x4,%ecx
40fc73:	8b 93 94 16 00 00    	mov    0x1694(%ebx),%edx
40fc79:	8b 46 28             	mov    0x28(%esi),%eax
40fc7c:	ff 56 20             	call   *0x20(%esi)
40fc7f:	8b e8                	mov    %eax,%ebp
40fc81:	89 6b 08             	mov    %ebp,0x8(%ebx)
40fc84:	83 7b 30 00          	cmpl   $0x0,0x30(%ebx)
40fc88:	74 12                	je     0x40fc9c
40fc8a:	83 7b 38 00          	cmpl   $0x0,0x38(%ebx)
40fc8e:	74 0c                	je     0x40fc9c
40fc90:	83 7b 3c 00          	cmpl   $0x0,0x3c(%ebx)
40fc94:	74 06                	je     0x40fc9c
40fc96:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40fc9a:	75 11                	jne    0x40fcad
40fc9c:	8b c6                	mov    %esi,%eax
40fc9e:	e8 85 fe ff ff       	call   0x40fb28
40fca3:	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
40fca8:	e9 ac 00 00 00       	jmp    0x40fd59
40fcad:	8b 53 24             	mov    0x24(%ebx),%edx
40fcb0:	03 d2                	add    %edx,%edx
40fcb2:	52                   	push   %edx
40fcb3:	8b 4f 30             	mov    0x30(%edi),%ecx
40fcb6:	51                   	push   %ecx
40fcb7:	8b 43 30             	mov    0x30(%ebx),%eax
40fcba:	50                   	push   %eax
40fcbb:	e8 e4 f6 ff ff       	call   0x40f3a4
40fcc0:	83 c4 0c             	add    $0xc,%esp
40fcc3:	8b 53 24             	mov    0x24(%ebx),%edx
40fcc6:	03 d2                	add    %edx,%edx
40fcc8:	52                   	push   %edx
40fcc9:	8b 4f 38             	mov    0x38(%edi),%ecx
40fccc:	51                   	push   %ecx
40fccd:	8b 43 38             	mov    0x38(%ebx),%eax
40fcd0:	50                   	push   %eax
40fcd1:	e8 ce f6 ff ff       	call   0x40f3a4
40fcd6:	83 c4 0c             	add    $0xc,%esp
40fcd9:	8b 53 44             	mov    0x44(%ebx),%edx
40fcdc:	03 d2                	add    %edx,%edx
40fcde:	52                   	push   %edx
40fcdf:	8b 4f 3c             	mov    0x3c(%edi),%ecx
40fce2:	51                   	push   %ecx
40fce3:	8b 43 3c             	mov    0x3c(%ebx),%eax
40fce6:	50                   	push   %eax
40fce7:	e8 b8 f6 ff ff       	call   0x40f3a4
40fcec:	83 c4 0c             	add    $0xc,%esp
40fcef:	8b 53 0c             	mov    0xc(%ebx),%edx
40fcf2:	52                   	push   %edx
40fcf3:	8b 4f 08             	mov    0x8(%edi),%ecx
40fcf6:	51                   	push   %ecx
40fcf7:	8b 43 08             	mov    0x8(%ebx),%eax
40fcfa:	50                   	push   %eax
40fcfb:	e8 a4 f6 ff ff       	call   0x40f3a4
40fd00:	8b 57 10             	mov    0x10(%edi),%edx
40fd03:	83 c4 0c             	add    $0xc,%esp
40fd06:	2b 57 08             	sub    0x8(%edi),%edx
40fd09:	03 53 08             	add    0x8(%ebx),%edx
40fd0c:	89 53 10             	mov    %edx,0x10(%ebx)
40fd0f:	8d 93 8c 00 00 00    	lea    0x8c(%ebx),%edx
40fd15:	8b 8b 94 16 00 00    	mov    0x1694(%ebx),%ecx
40fd1b:	d1 e9                	shr    $1,%ecx
40fd1d:	03 c9                	add    %ecx,%ecx
40fd1f:	03 e9                	add    %ecx,%ebp
40fd21:	8d 8b 80 09 00 00    	lea    0x980(%ebx),%ecx
40fd27:	89 ab 9c 16 00 00    	mov    %ebp,0x169c(%ebx)
40fd2d:	8b 83 94 16 00 00    	mov    0x1694(%ebx),%eax
40fd33:	8d 04 40             	lea    (%eax,%eax,2),%eax
40fd36:	03 43 08             	add    0x8(%ebx),%eax
40fd39:	89 83 90 16 00 00    	mov    %eax,0x1690(%ebx)
40fd3f:	89 93 10 0b 00 00    	mov    %edx,0xb10(%ebx)
40fd45:	8d 83 74 0a 00 00    	lea    0xa74(%ebx),%eax
40fd4b:	89 8b 1c 0b 00 00    	mov    %ecx,0xb1c(%ebx)
40fd51:	89 83 28 0b 00 00    	mov    %eax,0xb28(%ebx)
40fd57:	33 c0                	xor    %eax,%eax
40fd59:	5a                   	pop    %edx
40fd5a:	5d                   	pop    %ebp
40fd5b:	5f                   	pop    %edi
40fd5c:	5e                   	pop    %esi
40fd5d:	5b                   	pop    %ebx
40fd5e:	c3                   	ret
40fd5f:	90                   	nop
40fd60:	53                   	push   %ebx
40fd61:	56                   	push   %esi
40fd62:	8b f0                	mov    %eax,%esi
40fd64:	57                   	push   %edi
40fd65:	8b fa                	mov    %edx,%edi
40fd67:	8b 5e 04             	mov    0x4(%esi),%ebx
40fd6a:	3b cb                	cmp    %ebx,%ecx
40fd6c:	73 02                	jae    0x40fd70
40fd6e:	8b d9                	mov    %ecx,%ebx
40fd70:	85 db                	test   %ebx,%ebx
40fd72:	75 04                	jne    0x40fd78
40fd74:	33 c0                	xor    %eax,%eax
40fd76:	eb 2f                	jmp    0x40fda7
40fd78:	29 5e 04             	sub    %ebx,0x4(%esi)
40fd7b:	8b 56 1c             	mov    0x1c(%esi),%edx
40fd7e:	83 7a 18 00          	cmpl   $0x0,0x18(%edx)
40fd82:	75 0f                	jne    0x40fd93
40fd84:	8b cb                	mov    %ebx,%ecx
40fd86:	8b 16                	mov    (%esi),%edx
40fd88:	8b 46 30             	mov    0x30(%esi),%eax
40fd8b:	e8 58 37 00 00       	call   0x4134e8
40fd90:	89 46 30             	mov    %eax,0x30(%esi)
40fd93:	53                   	push   %ebx
40fd94:	8b 0e                	mov    (%esi),%ecx
40fd96:	51                   	push   %ecx
40fd97:	57                   	push   %edi
40fd98:	e8 07 f6 ff ff       	call   0x40f3a4
40fd9d:	83 c4 0c             	add    $0xc,%esp
40fda0:	8b c3                	mov    %ebx,%eax
40fda2:	01 06                	add    %eax,(%esi)
40fda4:	01 5e 08             	add    %ebx,0x8(%esi)
40fda7:	5f                   	pop    %edi
40fda8:	5e                   	pop    %esi
40fda9:	5b                   	pop    %ebx
40fdaa:	c3                   	ret
40fdab:	90                   	nop
40fdac:	53                   	push   %ebx
40fdad:	8b d8                	mov    %eax,%ebx
40fdaf:	8b 43 24             	mov    0x24(%ebx),%eax
40fdb2:	03 c0                	add    %eax,%eax
40fdb4:	89 43 34             	mov    %eax,0x34(%ebx)
40fdb7:	8b 53 3c             	mov    0x3c(%ebx),%edx
40fdba:	8b 4b 44             	mov    0x44(%ebx),%ecx
40fdbd:	66 c7 44 4a fe 00 00 	movw   $0x0,-0x2(%edx,%ecx,2)
40fdc4:	8b 43 44             	mov    0x44(%ebx),%eax
40fdc7:	48                   	dec    %eax
40fdc8:	03 c0                	add    %eax,%eax
40fdca:	50                   	push   %eax
40fdcb:	6a 00                	push   $0x0
40fdcd:	8b 53 3c             	mov    0x3c(%ebx),%edx
40fdd0:	52                   	push   %edx
40fdd1:	e8 ba f5 ff ff       	call   0x40f390
40fdd6:	8b 4b 7c             	mov    0x7c(%ebx),%ecx
40fdd9:	83 c4 0c             	add    $0xc,%esp
40fddc:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
40fddf:	0f b7 04 8d f2 64 42 	movzwl 0x4264f2(,%ecx,4),%eax
40fde6:	00
40fde7:	89 43 78             	mov    %eax,0x78(%ebx)
40fdea:	8b 53 7c             	mov    0x7c(%ebx),%edx
40fded:	8d 14 52             	lea    (%edx,%edx,2),%edx
40fdf0:	0f b7 0c 95 f0 64 42 	movzwl 0x4264f0(,%edx,4),%ecx
40fdf7:	00
40fdf8:	89 8b 84 00 00 00    	mov    %ecx,0x84(%ebx)
40fdfe:	8b 43 7c             	mov    0x7c(%ebx),%eax
40fe01:	8d 04 40             	lea    (%eax,%eax,2),%eax
40fe04:	0f b7 14 85 f4 64 42 	movzwl 0x4264f4(,%eax,4),%edx
40fe0b:	00
40fe0c:	89 93 88 00 00 00    	mov    %edx,0x88(%ebx)
40fe12:	33 d2                	xor    %edx,%edx
40fe14:	8b 4b 7c             	mov    0x7c(%ebx),%ecx
40fe17:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
40fe1a:	0f b7 04 8d f6 64 42 	movzwl 0x4264f6(,%ecx,4),%eax
40fe21:	00
40fe22:	89 43 74             	mov    %eax,0x74(%ebx)
40fe25:	89 53 64             	mov    %edx,0x64(%ebx)
40fe28:	33 c9                	xor    %ecx,%ecx
40fe2a:	33 c0                	xor    %eax,%eax
40fe2c:	89 4b 54             	mov    %ecx,0x54(%ebx)
40fe2f:	89 43 6c             	mov    %eax,0x6c(%ebx)
40fe32:	ba 02 00 00 00       	mov    $0x2,%edx
40fe37:	33 c0                	xor    %eax,%eax
40fe39:	89 53 70             	mov    %edx,0x70(%ebx)
40fe3c:	89 53 58             	mov    %edx,0x58(%ebx)
40fe3f:	89 43 60             	mov    %eax,0x60(%ebx)
40fe42:	33 c9                	xor    %ecx,%ecx
40fe44:	89 4b 40             	mov    %ecx,0x40(%ebx)
40fe47:	5b                   	pop    %ebx
40fe48:	c3                   	ret
40fe49:	90                   	nop
40fe4a:	90                   	nop
40fe4b:	90                   	nop
40fe4c:	53                   	push   %ebx
40fe4d:	56                   	push   %esi
40fe4e:	57                   	push   %edi
40fe4f:	83 c4 e4             	add    $0xffffffe4,%esp
40fe52:	89 14 24             	mov    %edx,(%esp)
40fe55:	8b 50 74             	mov    0x74(%eax),%edx
40fe58:	89 54 24 04          	mov    %edx,0x4(%esp)
40fe5c:	8b 50 64             	mov    0x64(%eax),%edx