40bbc5:	74 26                	je     0x40bbed
40bbc7:	25 f7 ff 00 00       	and    $0xfff7,%eax
40bbcc:	66 89 86 b6 01 00 00 	mov    %ax,0x1b6(%esi)
40bbd3:	e8 17 00 00 00       	call   0x40bbef
40bbd8:	66 8b 86 ae 01 00 00 	mov    0x1ae(%esi),%ax
40bbdf:	66 2b 86 aa 01 00 00 	sub    0x1aa(%esi),%ax
40bbe6:	66 89 86 ac 01 00 00 	mov    %ax,0x1ac(%esi)
40bbed:	5e                   	pop    %esi
40bbee:	c3                   	ret
40bbef:	8b ff                	mov    %edi,%edi
40bbf1:	55                   	push   %ebp
40bbf2:	8b ec                	mov    %esp,%ebp
40bbf4:	83 ec 24             	sub    $0x24,%esp
40bbf7:	a1 08 85 43 00       	mov    0x438508,%eax
40bbfc:	33 c5                	xor    %ebp,%eax
40bbfe:	89 45 fc             	mov    %eax,-0x4(%ebp)
40bc01:	53                   	push   %ebx
40bc02:	56                   	push   %esi
40bc03:	8b f1                	mov    %ecx,%esi
40bc05:	57                   	push   %edi
40bc06:	89 75 f8             	mov    %esi,-0x8(%ebp)
40bc09:	0f b7 86 b6 01 00 00 	movzwl 0x1b6(%esi),%eax
40bc10:	a8 04                	test   $0x4,%al
40bc12:	0f 84 c9 00 00 00    	je     0x40bce1
40bc18:	25 fb ff 00 00       	and    $0xfffb,%eax
40bc1d:	66 89 86 b6 01 00 00 	mov    %ax,0x1b6(%esi)
40bc24:	e8 6c 01 00 00       	call   0x40bd95
40bc29:	0f b7 96 a2 01 00 00 	movzwl 0x1a2(%esi),%edx
40bc30:	33 db                	xor    %ebx,%ebx
40bc32:	0f b7 be ae 01 00 00 	movzwl 0x1ae(%esi),%edi
40bc39:	66 39 9e a0 01 00 00 	cmp    %bx,0x1a0(%esi)
40bc40:	0f 84 ad 00 00 00    	je     0x40bcf3
40bc46:	8d 42 02             	lea    0x2(%edx),%eax
40bc49:	3b f8                	cmp    %eax,%edi
40bc4b:	0f 82 1b 01 00 00    	jb     0x40bd6c
40bc51:	8b 5e 10             	mov    0x10(%esi),%ebx
40bc54:	66 8b 0c 53          	mov    (%ebx,%edx,2),%cx
40bc58:	e8 25 01 00 00       	call   0x40bd82
40bc5d:	85 c0                	test   %eax,%eax
40bc5f:	0f 84 07 01 00 00    	je     0x40bd6c
40bc65:	66 8b 4c 53 02       	mov    0x2(%ebx,%edx,2),%cx
40bc6a:	e8 13 01 00 00       	call   0x40bd82
40bc6f:	85 c0                	test   %eax,%eax
40bc71:	0f 84 f5 00 00 00    	je     0x40bd6c
40bc77:	0f b7 86 a2 01 00 00 	movzwl 0x1a2(%esi),%eax
40bc7e:	83 c0 02             	add    $0x2,%eax
40bc81:	0f b7 c8             	movzwl %ax,%ecx
40bc84:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40bc87:	51                   	push   %ecx
40bc88:	8d 4e 0c             	lea    0xc(%esi),%ecx
40bc8b:	66 89 86 a2 01 00 00 	mov    %ax,0x1a2(%esi)
40bc92:	e8 84 ed ff ff       	call   0x40aa1b
40bc97:	8b d8                	mov    %eax,%ebx
40bc99:	83 fb ff             	cmp    $0xffffffff,%ebx
40bc9c:	0f 84 54 44 01 00    	je     0x4200f6
40bca2:	3b df                	cmp    %edi,%ebx
40bca4:	0f 8f 4c 44 01 00    	jg     0x4200f6
40bcaa:	ff 75 f8             	push   -0x8(%ebp)
40bcad:	8d 4e 0c             	lea    0xc(%esi),%ecx
40bcb0:	6a 3a                	push   $0x3a
40bcb2:	e8 75 02 00 00       	call   0x40bf2c
40bcb7:	83 f8 ff             	cmp    $0xffffffff,%eax
40bcba:	0f 85 3d 44 01 00    	jne    0x4200fd
40bcc0:	8b fb                	mov    %ebx,%edi
40bcc2:	66 2b be a2 01 00 00 	sub    0x1a2(%esi),%di
40bcc9:	66 89 be a4 01 00 00 	mov    %di,0x1a4(%esi)
40bcd0:	0f b7 c3             	movzwl %bx,%eax
40bcd3:	66 89 86 aa 01 00 00 	mov    %ax,0x1aa(%esi)
40bcda:	66 89 86 ba 01 00 00 	mov    %ax,0x1ba(%esi)
40bce1:	8d 65 d0             	lea    -0x30(%ebp),%esp
40bce4:	5f                   	pop    %edi
40bce5:	5e                   	pop    %esi
40bce6:	5b                   	pop    %ebx
40bce7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40bcea:	33 cd                	xor    %ebp,%ecx
40bcec:	e8 cf ea 00 00       	call   0x41a7c0
40bcf1:	c9                   	leave
40bcf2:	c3                   	ret
40bcf3:	3b d7                	cmp    %edi,%edx
40bcf5:	73 35                	jae    0x40bd2c
40bcf7:	8b 46 10             	mov    0x10(%esi),%eax
40bcfa:	8d 34 50             	lea    (%eax,%edx,2),%esi
40bcfd:	66 8b 0e             	mov    (%esi),%cx
40bd00:	e8 7d 00 00 00       	call   0x40bd82
40bd05:	85 c0                	test   %eax,%eax
40bd07:	0f 85 0e 43 01 00    	jne    0x42001b
40bd0d:	8b 75 f8             	mov    -0x8(%ebp),%esi
40bd10:	83 fb 04             	cmp    $0x4,%ebx
40bd13:	0f 84 16 43 01 00    	je     0x42002f
40bd19:	83 fb 05             	cmp    $0x5,%ebx
40bd1c:	74 5a                	je     0x40bd78
40bd1e:	83 fb 03             	cmp    $0x3,%ebx
40bd21:	74 55                	je     0x40bd78
40bd23:	83 fb 06             	cmp    $0x6,%ebx
40bd26:	0f 84 10 43 01 00    	je     0x42003c
40bd2c:	0f b7 9e a2 01 00 00 	movzwl 0x1a2(%esi),%ebx
40bd33:	8b d3                	mov    %ebx,%edx
40bd35:	66 89 9e aa 01 00 00 	mov    %bx,0x1aa(%esi)
40bd3c:	8d 42 02             	lea    0x2(%edx),%eax
40bd3f:	3b f8                	cmp    %eax,%edi
40bd41:	72 14                	jb     0x40bd57
40bd43:	8b 46 10             	mov    0x10(%esi),%eax
40bd46:	66 8b 0c 50          	mov    (%eax,%edx,2),%cx
40bd4a:	e8 33 00 00 00       	call   0x40bd82
40bd4f:	85 c0                	test   %eax,%eax
40bd51:	0f 85 f2 42 01 00    	jne    0x420049
40bd57:	33 c0                	xor    %eax,%eax
40bd59:	66 89 86 a8 01 00 00 	mov    %ax,0x1a8(%esi)
40bd60:	66 89 86 a4 01 00 00 	mov    %ax,0x1a4(%esi)
40bd67:	e9 75 ff ff ff       	jmp    0x40bce1
40bd6c:	0f b7 86 a2 01 00 00 	movzwl 0x1a2(%esi),%eax
40bd73:	e9 5b ff ff ff       	jmp    0x40bcd3
40bd78:	66 83 86 a2 01 00 00 	addw   $0x3,0x1a2(%esi)
40bd7f:	03
40bd80:	eb aa                	jmp    0x40bd2c
40bd82:	66 83 f9 2f          	cmp    $0x2f,%cx
40bd86:	75 04                	jne    0x40bd8c
40bd88:	33 c0                	xor    %eax,%eax
40bd8a:	40                   	inc    %eax
40bd8b:	c3                   	ret
40bd8c:	66 83 f9 5c          	cmp    $0x5c,%cx
40bd90:	74 f6                	je     0x40bd88
40bd92:	33 c0                	xor    %eax,%eax
40bd94:	c3                   	ret
40bd95:	8b ff                	mov    %edi,%edi
40bd97:	55                   	push   %ebp
40bd98:	8b ec                	mov    %esp,%ebp
40bd9a:	83 ec 14             	sub    $0x14,%esp
40bd9d:	53                   	push   %ebx
40bd9e:	56                   	push   %esi
40bd9f:	57                   	push   %edi
40bda0:	8b f9                	mov    %ecx,%edi
40bda2:	0f b7 87 b6 01 00 00 	movzwl 0x1b6(%edi),%eax
40bda9:	a8 01                	test   $0x1,%al
40bdab:	0f 84 fb 00 00 00    	je     0x40beac
40bdb1:	33 c9                	xor    %ecx,%ecx
40bdb3:	83 cb ff             	or     $0xffffffff,%ebx
40bdb6:	66 89 8f a2 01 00 00 	mov    %cx,0x1a2(%edi)
40bdbd:	25 fe ff 00 00       	and    $0xfffe,%eax
40bdc2:	6a 03                	push   $0x3
40bdc4:	59                   	pop    %ecx
40bdc5:	66 89 8f a0 01 00 00 	mov    %cx,0x1a0(%edi)
40bdcc:	0b f3                	or     %ebx,%esi
40bdce:	33 c9                	xor    %ecx,%ecx
40bdd0:	66 89 87 b6 01 00 00 	mov    %ax,0x1b6(%edi)
40bdd7:	a8 20                	test   $0x20,%al
40bdd9:	75 28                	jne    0x40be03
40bddb:	51                   	push   %ecx
40bddc:	6a 23                	push   $0x23
40bdde:	8d 4f 0c             	lea    0xc(%edi),%ecx
40bde1:	e8 46 01 00 00       	call   0x40bf2c
40bde6:	6a 00                	push   $0x0
40bde8:	6a 3f                	push   $0x3f
40bdea:	8d 4f 0c             	lea    0xc(%edi),%ecx
40bded:	8b d8                	mov    %eax,%ebx
40bdef:	e8 38 01 00 00       	call   0x40bf2c
40bdf4:	8b f0                	mov    %eax,%esi
40bdf6:	83 fb ff             	cmp    $0xffffffff,%ebx
40bdf9:	0f 85 f5 00 00 00    	jne    0x40bef4
40bdff:	8b de                	mov    %esi,%ebx
40be01:	33 c9                	xor    %ecx,%ecx
40be03:	0f b7 57 18          	movzwl 0x18(%edi),%edx
40be07:	8b c2                	mov    %edx,%eax
40be09:	83 fb ff             	cmp    $0xffffffff,%ebx
40be0c:	0f 85 f0 00 00 00    	jne    0x40bf02
40be12:	51                   	push   %ecx
40be13:	6a 3a                	push   $0x3a
40be15:	8d 4f 0c             	lea    0xc(%edi),%ecx
40be18:	66 89 87 ae 01 00 00 	mov    %ax,0x1ae(%edi)
40be1f:	e8 08 01 00 00       	call   0x40bf2c
40be24:	89 45 fc             	mov    %eax,-0x4(%ebp)
40be27:	83 f8 ff             	cmp    $0xffffffff,%eax
40be2a:	0f 84 e3 00 00 00    	je     0x40bf13
40be30:	0f b7 97 ae 01 00 00 	movzwl 0x1ae(%edi),%edx
40be37:	3b c2                	cmp    %edx,%eax
40be39:	0f 8f d4 00 00 00    	jg     0x40bf13
40be3f:	50                   	push   %eax
40be40:	33 db                	xor    %ebx,%ebx
40be42:	8d 45 f0             	lea    -0x10(%ebp),%eax
40be45:	53                   	push   %ebx
40be46:	50                   	push   %eax
40be47:	8d 4f 0c             	lea    0xc(%edi),%ecx
40be4a:	e8 cc 01 00 00       	call   0x40c01b
40be4f:	53                   	push   %ebx
40be50:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40be53:	e8 b8 f1 ff ff       	call   0x40b010
40be58:	83 f8 ff             	cmp    $0xffffffff,%eax
40be5b:	75 4f                	jne    0x40beac
40be5d:	8b 55 fc             	mov    -0x4(%ebp),%edx
40be60:	33 c0                	xor    %eax,%eax
40be62:	40                   	inc    %eax
40be63:	39 45 f4             	cmp    %eax,-0xc(%ebp)
40be66:	0f 84 3c 43 01 00    	je     0x4201a8
40be6c:	8d 42 01             	lea    0x1(%edx),%eax
40be6f:	66 89 87 a2 01 00 00 	mov    %ax,0x1a2(%edi)
40be76:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40be79:	ff 35 90 8e 43 00    	push   0x438e90
40be7f:	e8 dd 00 00 00       	call   0x40bf61
40be84:	85 c0                	test   %eax,%eax
40be86:	75 29                	jne    0x40beb1
40be88:	66 89 87 a0 01 00 00 	mov    %ax,0x1a0(%edi)
40be8f:	0f b7 4f 18          	movzwl 0x18(%edi),%ecx
40be93:	83 fe ff             	cmp    $0xffffffff,%esi
40be96:	0f 85 1a 44 01 00    	jne    0x4202b6
40be9c:	33 c0                	xor    %eax,%eax
40be9e:	66 89 8f ae 01 00 00 	mov    %cx,0x1ae(%edi)
40bea5:	66 89 87 b0 01 00 00 	mov    %ax,0x1b0(%edi)
40beac:	5f                   	pop    %edi
40bead:	5e                   	pop    %esi
40beae:	5b                   	pop    %ebx
40beaf:	c9                   	leave
40beb0:	c3                   	ret
40beb1:	ff 35 70 8e 43 00    	push   0x438e70
40beb7:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40beba:	e8 a2 00 00 00       	call   0x40bf61
40bebf:	85 c0                	test   %eax,%eax
40bec1:	0f 84 61 43 01 00    	je     0x420228
40bec7:	ff 35 80 8e 43 00    	push   0x438e80
40becd:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40bed0:	e8 8c 00 00 00       	call   0x40bf61
40bed5:	85 c0                	test   %eax,%eax
40bed7:	74 4f                	je     0x40bf28
40bed9:	ff 35 60 8e 43 00    	push   0x438e60
40bedf:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40bee2:	e8 7a 00 00 00       	call   0x40bf61
40bee7:	85 c0                	test   %eax,%eax
40bee9:	0f 85 48 43 01 00    	jne    0x420237
40beef:	6a 08                	push   $0x8
40bef1:	58                   	pop    %eax
40bef2:	eb 94                	jmp    0x40be88
40bef4:	83 fe ff             	cmp    $0xffffffff,%esi
40bef7:	0f 84 04 ff ff ff    	je     0x40be01
40befd:	e9 99 42 01 00       	jmp    0x42019b
40bf02:	0f b7 c3             	movzwl %bx,%eax
40bf05:	2b d0                	sub    %eax,%edx
40bf07:	66 89 97 b0 01 00 00 	mov    %dx,0x1b0(%edi)
40bf0e:	e9 ff fe ff ff       	jmp    0x40be12
40bf13:	6a 02                	push   $0x2
40bf15:	58                   	pop    %eax
40bf16:	66 39 87 ae 01 00 00 	cmp    %ax,0x1ae(%edi)
40bf1d:	0f 82 6c ff ff ff    	jb     0x40be8f
40bf23:	e9 3b 43 01 00       	jmp    0x420263
40bf28:	6a 07                	push   $0x7
40bf2a:	eb c5                	jmp    0x40bef1
40bf2c:	8b ff                	mov    %edi,%edi
40bf2e:	55                   	push   %ebp
40bf2f:	8b ec                	mov    %esp,%ebp
40bf31:	56                   	push   %esi
40bf32:	8b f1                	mov    %ecx,%esi
40bf34:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40bf37:	3b 4e 0c             	cmp    0xc(%esi),%ecx
40bf3a:	73 16                	jae    0x40bf52
40bf3c:	8b 46 04             	mov    0x4(%esi),%eax
40bf3f:	ff 75 08             	push   0x8(%ebp)
40bf42:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40bf45:	50                   	push   %eax
40bf46:	ff 15 58 a4 43 00    	call   *0x43a458
40bf4c:	59                   	pop    %ecx
40bf4d:	59                   	pop    %ecx
40bf4e:	85 c0                	test   %eax,%eax
40bf50:	75 08                	jne    0x40bf5a
40bf52:	83 c8 ff             	or     $0xffffffff,%eax
40bf55:	5e                   	pop    %esi
40bf56:	5d                   	pop    %ebp
40bf57:	c2 08 00             	ret    $0x8
40bf5a:	2b 46 04             	sub    0x4(%esi),%eax
40bf5d:	d1 f8                	sar    $1,%eax
40bf5f:	eb f4                	jmp    0x40bf55
40bf61:	8b ff                	mov    %edi,%edi
40bf63:	55                   	push   %ebp
40bf64:	8b ec                	mov    %esp,%ebp
40bf66:	53                   	push   %ebx
40bf67:	56                   	push   %esi
40bf68:	8b 75 08             	mov    0x8(%ebp),%esi
40bf6b:	33 db                	xor    %ebx,%ebx
40bf6d:	8b d6                	mov    %esi,%edx
40bf6f:	57                   	push   %edi
40bf70:	8b f9                	mov    %ecx,%edi
40bf72:	8d 4a 02             	lea    0x2(%edx),%ecx
40bf75:	66 8b 02             	mov    (%edx),%ax
40bf78:	83 c2 02             	add    $0x2,%edx
40bf7b:	66 3b c3             	cmp    %bx,%ax
40bf7e:	75 f5                	jne    0x40bf75
40bf80:	8b 47 08             	mov    0x8(%edi),%eax
40bf83:	2b d1                	sub    %ecx,%edx
40bf85:	ff 77 04             	push   0x4(%edi)
40bf88:	d1 fa                	sar    $1,%edx
40bf8a:	52                   	push   %edx
40bf8b:	8b 48 04             	mov    0x4(%eax),%ecx
40bf8e:	8b 07                	mov    (%edi),%eax
40bf90:	56                   	push   %esi
40bf91:	ff 77 04             	push   0x4(%edi)
40bf94:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40bf97:	e8 2b 00 00 00       	call   0x40bfc7
40bf9c:	8b c8                	mov    %eax,%ecx
40bf9e:	85 c9                	test   %ecx,%ecx
40bfa0:	75 17                	jne    0x40bfb9
40bfa2:	8d 56 02             	lea    0x2(%esi),%edx
40bfa5:	66 8b 06             	mov    (%esi),%ax
40bfa8:	83 c6 02             	add    $0x2,%esi
40bfab:	66 3b c3             	cmp    %bx,%ax
40bfae:	75 f5                	jne    0x40bfa5
40bfb0:	2b f2                	sub    %edx,%esi
40bfb2:	d1 fe                	sar    $1,%esi
40bfb4:	39 77 04             	cmp    %esi,0x4(%edi)
40bfb7:	72 09                	jb     0x40bfc2
40bfb9:	5f                   	pop    %edi
40bfba:	5e                   	pop    %esi
40bfbb:	8b c1                	mov    %ecx,%eax
40bfbd:	5b                   	pop    %ebx
40bfbe:	5d                   	pop    %ebp
40bfbf:	c2 04 00             	ret    $0x4
40bfc2:	83 c9 ff             	or     $0xffffffff,%ecx
40bfc5:	eb f2                	jmp    0x40bfb9
40bfc7:	8b ff                	mov    %edi,%edi
40bfc9:	55                   	push   %ebp
40bfca:	8b ec                	mov    %esp,%ebp
40bfcc:	8b 45 14             	mov    0x14(%ebp),%eax
40bfcf:	53                   	push   %ebx
40bfd0:	56                   	push   %esi
40bfd1:	8b 75 08             	mov    0x8(%ebp),%esi
40bfd4:	8b da                	mov    %edx,%ebx
40bfd6:	57                   	push   %edi
40bfd7:	3b f0                	cmp    %eax,%esi
40bfd9:	72 02                	jb     0x40bfdd
40bfdb:	8b f0                	mov    %eax,%esi
40bfdd:	8b 7d 10             	mov    0x10(%ebp),%edi
40bfe0:	3b f8                	cmp    %eax,%edi
40bfe2:	72 02                	jb     0x40bfe6
40bfe4:	8b f8                	mov    %eax,%edi
40bfe6:	57                   	push   %edi
40bfe7:	ff 75 0c             	push   0xc(%ebp)
40bfea:	56                   	push   %esi
40bfeb:	53                   	push   %ebx
40bfec:	6a 01                	push   $0x1
40bfee:	68 00 08 00 00       	push   $0x800
40bff3:	ff 15 5c a2 43 00    	call   *0x43a25c
40bff9:	83 e8 01             	sub    $0x1,%eax
40bffc:	74 18                	je     0x40c016
40bffe:	83 e8 01             	sub    $0x1,%eax
40c001:	75 07                	jne    0x40c00a
40c003:	5f                   	pop    %edi
40c004:	5e                   	pop    %esi
40c005:	5b                   	pop    %ebx
40c006:	5d                   	pop    %ebp
40c007:	c2 10 00             	ret    $0x10
40c00a:	83 e8 01             	sub    $0x1,%eax
40c00d:	0f 85 bb 42 01 00    	jne    0x4202ce
40c013:	40                   	inc    %eax
40c014:	eb ed                	jmp    0x40c003