40b959:	c7 85 74 fd ff ff 18 	movl   $0x401218,-0x28c(%ebp)
40b960:	12 40 00
40b963:	8d 8d 80 fd ff ff    	lea    -0x280(%ebp),%ecx
40b969:	89 b5 78 fd ff ff    	mov    %esi,-0x288(%ebp)
40b96f:	e8 de 82 00 00       	call   0x413c52
40b974:	c7 85 74 fd ff ff fc 	movl   $0x4011fc,-0x28c(%ebp)
40b97b:	11 40 00
40b97e:	89 b5 34 ff ff ff    	mov    %esi,-0xcc(%ebp)
40b984:	51                   	push   %ecx
40b985:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40b989:	8d 8d 74 fd ff ff    	lea    -0x28c(%ebp),%ecx
40b98f:	ff b5 e4 fb ff ff    	push   -0x41c(%ebp)
40b995:	e8 42 2a 00 00       	call   0x40e3dc
40b99a:	8d 85 b4 fb ff ff    	lea    -0x44c(%ebp),%eax
40b9a0:	50                   	push   %eax
40b9a1:	8d 8d 74 fd ff ff    	lea    -0x28c(%ebp),%ecx
40b9a7:	e8 2c 01 00 00       	call   0x40bad8
40b9ac:	39 70 04             	cmp    %esi,0x4(%eax)
40b9af:	0f 85 71 45 01 00    	jne    0x41ff26
40b9b5:	8d 8d 74 fd ff ff    	lea    -0x28c(%ebp),%ecx
40b9bb:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40b9bf:	e8 b9 2a 00 00       	call   0x40e47d
40b9c4:	83 bd 54 ff ff ff 00 	cmpl   $0x0,-0xac(%ebp)
40b9cb:	75 59                	jne    0x40ba26
40b9cd:	8b 8d d8 fb ff ff    	mov    -0x428(%ebp),%ecx
40b9d3:	8d 85 b4 fb ff ff    	lea    -0x44c(%ebp),%eax
40b9d9:	50                   	push   %eax
40b9da:	81 c1 1c 04 00 00    	add    $0x41c,%ecx
40b9e0:	e8 f3 00 00 00       	call   0x40bad8
40b9e5:	8b c8                	mov    %eax,%ecx
40b9e7:	8b 41 08             	mov    0x8(%ecx),%eax
40b9ea:	8b 51 04             	mov    0x4(%ecx),%edx
40b9ed:	8b 09                	mov    (%ecx),%ecx
40b9ef:	52                   	push   %edx
40b9f0:	8b 40 04             	mov    0x4(%eax),%eax
40b9f3:	6a 00                	push   $0x0
40b9f5:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
40b9f8:	8b 85 48 ff ff ff    	mov    -0xb8(%ebp),%eax
40b9fe:	51                   	push   %ecx
40b9ff:	8b 70 10             	mov    0x10(%eax),%esi
40ba02:	81 fe a0 36 41 00    	cmp    $0x4136a0,%esi
40ba08:	0f 85 5a 45 01 00    	jne    0x41ff68
40ba0e:	8d 8d 48 ff ff ff    	lea    -0xb8(%ebp),%ecx
40ba14:	e8 87 7c 00 00       	call   0x4136a0
40ba19:	83 bd 54 ff ff ff 00 	cmpl   $0x0,-0xac(%ebp)
40ba20:	0f 84 57 45 01 00    	je     0x41ff7d
40ba26:	ff b5 cc fb ff ff    	push   -0x434(%ebp)
40ba2c:	8b 8d c8 fb ff ff    	mov    -0x438(%ebp),%ecx
40ba32:	8b 45 a8             	mov    -0x58(%ebp),%eax
40ba35:	8b 95 c0 fb ff ff    	mov    -0x440(%ebp),%edx
40ba3b:	f7 d8                	neg    %eax
40ba3d:	ff 71 04             	push   0x4(%ecx)
40ba40:	1b c0                	sbb    %eax,%eax
40ba42:	8b cb                	mov    %ebx,%ecx
40ba44:	ff b5 4c ff ff ff    	push   -0xb4(%ebp)
40ba4a:	23 45 a0             	and    -0x60(%ebp),%eax
40ba4d:	50                   	push   %eax
40ba4e:	ff b5 c4 fb ff ff    	push   -0x43c(%ebp)
40ba54:	e8 18 fc ff ff       	call   0x40b671
40ba59:	8b 8d e4 fb ff ff    	mov    -0x41c(%ebp),%ecx
40ba5f:	8b f0                	mov    %eax,%esi
40ba61:	c7 85 e0 fb ff ff e0 	movl   $0x4011e0,-0x420(%ebp)
40ba68:	11 40 00
40ba6b:	85 c9                	test   %ecx,%ecx
40ba6d:	74 0e                	je     0x40ba7d
40ba6f:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
40ba75:	3b c8                	cmp    %eax,%ecx
40ba77:	0f 85 6d 45 01 00    	jne    0x41ffea
40ba7d:	bf 80 11 40 00       	mov    $0x401180,%edi
40ba82:	8d 8d dc fb ff ff    	lea    -0x424(%ebp),%ecx
40ba88:	89 bd e0 fb ff ff    	mov    %edi,-0x420(%ebp)
40ba8e:	e8 6c 07 00 00       	call   0x40c1ff
40ba93:	8b 45 a0             	mov    -0x60(%ebp),%eax
40ba96:	bb 64 11 40 00       	mov    $0x401164,%ebx
40ba9b:	89 5d 9c             	mov    %ebx,-0x64(%ebp)
40ba9e:	85 c0                	test   %eax,%eax
40baa0:	74 0b                	je     0x40baad
40baa2:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40baa5:	3b c1                	cmp    %ecx,%eax
40baa7:	0f 85 4a 45 01 00    	jne    0x41fff7
40baad:	8b 85 4c ff ff ff    	mov    -0xb4(%ebp),%eax
40bab3:	89 7d 9c             	mov    %edi,-0x64(%ebp)
40bab6:	89 9d 48 ff ff ff    	mov    %ebx,-0xb8(%ebp)
40babc:	85 c0                	test   %eax,%eax
40babe:	74 0e                	je     0x40bace
40bac0:	8d 8d 58 ff ff ff    	lea    -0xa8(%ebp),%ecx
40bac6:	3b c1                	cmp    %ecx,%eax
40bac8:	0f 85 36 45 01 00    	jne    0x420004
40bace:	8b c6                	mov    %esi,%eax
40bad0:	e8 1b f3 00 00       	call   0x41adf0
40bad5:	c2 10 00             	ret    $0x10
40bad8:	8b ff                	mov    %edi,%edi
40bada:	55                   	push   %ebp
40badb:	8b ec                	mov    %esp,%ebp
40badd:	56                   	push   %esi
40bade:	8b f1                	mov    %ecx,%esi
40bae0:	e8 23 00 00 00       	call   0x40bb08
40bae5:	0f b7 86 b4 01 00 00 	movzwl 0x1b4(%esi),%eax
40baec:	8d 4e 0c             	lea    0xc(%esi),%ecx
40baef:	50                   	push   %eax
40baf0:	0f b7 86 b2 01 00 00 	movzwl 0x1b2(%esi),%eax
40baf7:	50                   	push   %eax
40baf8:	ff 75 08             	push   0x8(%ebp)
40bafb:	e8 1b 05 00 00       	call   0x40c01b
40bb00:	8b 45 08             	mov    0x8(%ebp),%eax
40bb03:	5e                   	pop    %esi
40bb04:	5d                   	pop    %ebp
40bb05:	c2 04 00             	ret    $0x4
40bb08:	8b ff                	mov    %edi,%edi
40bb0a:	55                   	push   %ebp
40bb0b:	8b ec                	mov    %esp,%ebp
40bb0d:	83 ec 0c             	sub    $0xc,%esp
40bb10:	56                   	push   %esi
40bb11:	8b f1                	mov    %ecx,%esi
40bb13:	0f b7 86 b6 01 00 00 	movzwl 0x1b6(%esi),%eax
40bb1a:	a8 10                	test   $0x10,%al
40bb1c:	74 6b                	je     0x40bb89
40bb1e:	25 ef ff 00 00       	and    $0xffef,%eax
40bb23:	57                   	push   %edi
40bb24:	66 89 86 b6 01 00 00 	mov    %ax,0x1b6(%esi)
40bb2b:	e8 87 00 00 00       	call   0x40bbb7
40bb30:	0f b7 86 ac 01 00 00 	movzwl 0x1ac(%esi),%eax
40bb37:	8d 4e 0c             	lea    0xc(%esi),%ecx
40bb3a:	50                   	push   %eax
40bb3b:	0f b7 86 aa 01 00 00 	movzwl 0x1aa(%esi),%eax
40bb42:	50                   	push   %eax
40bb43:	8d 45 f4             	lea    -0xc(%ebp),%eax
40bb46:	50                   	push   %eax
40bb47:	e8 cf 04 00 00       	call   0x40c01b
40bb4c:	51                   	push   %ecx
40bb4d:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40bb50:	e8 37 00 00 00       	call   0x40bb8c
40bb55:	8b f8                	mov    %eax,%edi
40bb57:	83 ff ff             	cmp    $0xffffffff,%edi
40bb5a:	74 2c                	je     0x40bb88
40bb5c:	47                   	inc    %edi
40bb5d:	57                   	push   %edi
40bb5e:	e8 ad f4 ff ff       	call   0x40b010
40bb63:	83 f8 ff             	cmp    $0xffffffff,%eax
40bb66:	75 20                	jne    0x40bb88
40bb68:	66 8b 86 aa 01 00 00 	mov    0x1aa(%esi),%ax
40bb6f:	0f b7 cf             	movzwl %di,%ecx
40bb72:	66 03 c1             	add    %cx,%ax
40bb75:	66 89 86 b2 01 00 00 	mov    %ax,0x1b2(%esi)
40bb7c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40bb7f:	2b c1                	sub    %ecx,%eax
40bb81:	66 89 86 b4 01 00 00 	mov    %ax,0x1b4(%esi)
40bb88:	5f                   	pop    %edi
40bb89:	5e                   	pop    %esi
40bb8a:	c9                   	leave
40bb8b:	c3                   	ret
40bb8c:	8b ff                	mov    %edi,%edi
40bb8e:	56                   	push   %esi
40bb8f:	8b 31                	mov    (%ecx),%esi
40bb91:	8d 56 ff             	lea    -0x1(%esi),%edx
40bb94:	03 51 04             	add    0x4(%ecx),%edx
40bb97:	eb 12                	jmp    0x40bbab
40bb99:	85 d2                	test   %edx,%edx
40bb9b:	78 12                	js     0x40bbaf
40bb9d:	8b 41 08             	mov    0x8(%ecx),%eax
40bba0:	8b 40 04             	mov    0x4(%eax),%eax
40bba3:	66 83 3c 50 2e       	cmpw   $0x2e,(%eax,%edx,2)
40bba8:	74 05                	je     0x40bbaf
40bbaa:	4a                   	dec    %edx
40bbab:	3b d6                	cmp    %esi,%edx
40bbad:	73 ea                	jae    0x40bb99
40bbaf:	2b d6                	sub    %esi,%edx
40bbb1:	8b c2                	mov    %edx,%eax
40bbb3:	5e                   	pop    %esi
40bbb4:	c2 04 00             	ret    $0x4
40bbb7:	8b ff                	mov    %edi,%edi
40bbb9:	56                   	push   %esi
40bbba:	8b f1                	mov    %ecx,%esi
40bbbc:	0f b7 86 b6 01 00 00 	movzwl 0x1b6(%esi),%eax
40bbc3:	a8 08                	test   $0x8,%al
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