406ba1:	b8 04 20 00 00       	mov    $0x2004,%eax
406ba6:	e8 05 38 00 00       	call   0x40a3b0
406bab:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
406bb0:	33 c5                	xor    %ebp,%eax
406bb2:	89 45 fc             	mov    %eax,-0x4(%ebp)
406bb5:	56                   	push   %esi
406bb6:	57                   	push   %edi
406bb7:	8b 7d 08             	mov    0x8(%ebp),%edi
406bba:	8b f1                	mov    %ecx,%esi
406bbc:	66 83 3f 3d          	cmpw   $0x3d,(%edi)
406bc0:	75 2f                	jne    0x406bf1
406bc2:	57                   	push   %edi
406bc3:	e8 6d 02 00 00       	call   0x406e35
406bc8:	85 c0                	test   %eax,%eax
406bca:	78 27                	js     0x406bf3
406bcc:	8b ce                	mov    %esi,%ecx
406bce:	e8 5f 0a 00 00       	call   0x407632
406bd3:	8d 85 fc df ff ff    	lea    -0x2004(%ebp),%eax
406bd9:	8b ce                	mov    %esi,%ecx
406bdb:	50                   	push   %eax
406bdc:	e8 54 02 00 00       	call   0x406e35
406be1:	85 c0                	test   %eax,%eax
406be3:	78 0e                	js     0x406bf3
406be5:	57                   	push   %edi
406be6:	8b ce                	mov    %esi,%ecx
406be8:	e8 48 02 00 00       	call   0x406e35
406bed:	85 c0                	test   %eax,%eax
406bef:	78 02                	js     0x406bf3
406bf1:	33 c0                	xor    %eax,%eax
406bf3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406bf6:	5f                   	pop    %edi
406bf7:	33 cd                	xor    %ebp,%ecx
406bf9:	5e                   	pop    %esi
406bfa:	e8 61 2c 00 00       	call   0x409860
406bff:	c9                   	leave
406c00:	c2 04 00             	ret    $0x4
406c03:	8b ff                	mov    %edi,%edi
406c05:	55                   	push   %ebp
406c06:	8b ec                	mov    %esp,%ebp
406c08:	56                   	push   %esi
406c09:	be 50 17 40 00       	mov    $0x401750,%esi
406c0e:	ff 36                	push   (%esi)
406c10:	ff 75 08             	push   0x8(%ebp)
406c13:	ff 15 8c f0 40 00    	call   *0x40f08c
406c19:	85 c0                	test   %eax,%eax
406c1b:	74 10                	je     0x406c2d
406c1d:	83 c6 04             	add    $0x4,%esi
406c20:	81 fe 80 17 40 00    	cmp    $0x401780,%esi
406c26:	7c e6                	jl     0x406c0e
406c28:	33 c0                	xor    %eax,%eax
406c2a:	40                   	inc    %eax
406c2b:	eb 02                	jmp    0x406c2f
406c2d:	33 c0                	xor    %eax,%eax
406c2f:	5e                   	pop    %esi
406c30:	5d                   	pop    %ebp
406c31:	c2 04 00             	ret    $0x4
406c34:	8b ff                	mov    %edi,%edi
406c36:	55                   	push   %ebp
406c37:	8b ec                	mov    %esp,%ebp
406c39:	83 e4 f8             	and    $0xfffffff8,%esp
406c3c:	81 ec 24 02 00 00    	sub    $0x224,%esp
406c42:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
406c47:	33 c4                	xor    %esp,%eax
406c49:	89 84 24 20 02 00 00 	mov    %eax,0x220(%esp)
406c50:	53                   	push   %ebx
406c51:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c54:	8d 44 24 14          	lea    0x14(%esp),%eax
406c58:	56                   	push   %esi
406c59:	57                   	push   %edi
406c5a:	50                   	push   %eax
406c5b:	8b f9                	mov    %ecx,%edi
406c5d:	33 c9                	xor    %ecx,%ecx
406c5f:	68 1f 00 02 00       	push   $0x2001f
406c64:	51                   	push   %ecx
406c65:	53                   	push   %ebx
406c66:	ff 37                	push   (%edi)
406c68:	89 4c 24 20          	mov    %ecx,0x20(%esp)
406c6c:	89 4c 24 24          	mov    %ecx,0x24(%esp)
406c70:	89 4c 24 28          	mov    %ecx,0x28(%esp)
406c74:	89 4c 24 30          	mov    %ecx,0x30(%esp)
406c78:	ff 15 0c f0 40 00    	call   *0x40f00c
406c7e:	8b f0                	mov    %eax,%esi
406c80:	85 f6                	test   %esi,%esi
406c82:	0f 85 90 00 00 00    	jne    0x406d18
406c88:	39 74 24 0c          	cmp    %esi,0xc(%esp)
406c8c:	74 0c                	je     0x406c9a
406c8e:	ff 74 24 0c          	push   0xc(%esp)
406c92:	ff 15 00 f0 40 00    	call   *0x40f000
406c98:	8b f0                	mov    %eax,%esi
406c9a:	8b 44 24 1c          	mov    0x1c(%esp),%eax
406c9e:	89 44 24 0c          	mov    %eax,0xc(%esp)
406ca2:	85 f6                	test   %esi,%esi
406ca4:	75 72                	jne    0x406d18
406ca6:	8d 4c 24 20          	lea    0x20(%esp),%ecx
406caa:	51                   	push   %ecx
406cab:	56                   	push   %esi
406cac:	56                   	push   %esi
406cad:	56                   	push   %esi
406cae:	8d 4c 24 28          	lea    0x28(%esp),%ecx
406cb2:	51                   	push   %ecx
406cb3:	8d 4c 24 3c          	lea    0x3c(%esp),%ecx
406cb7:	51                   	push   %ecx
406cb8:	56                   	push   %esi
406cb9:	50                   	push   %eax
406cba:	eb 2b                	jmp    0x406ce7
406cbc:	8d 44 24 28          	lea    0x28(%esp),%eax
406cc0:	50                   	push   %eax
406cc1:	8d 4c 24 10          	lea    0x10(%esp),%ecx
406cc5:	e8 6a ff ff ff       	call   0x406c34
406cca:	8b f0                	mov    %eax,%esi
406ccc:	85 f6                	test   %esi,%esi
406cce:	75 48                	jne    0x406d18
406cd0:	8d 44 24 20          	lea    0x20(%esp),%eax
406cd4:	50                   	push   %eax
406cd5:	56                   	push   %esi
406cd6:	56                   	push   %esi
406cd7:	56                   	push   %esi
406cd8:	8d 44 24 28          	lea    0x28(%esp),%eax
406cdc:	50                   	push   %eax
406cdd:	8d 44 24 3c          	lea    0x3c(%esp),%eax
406ce1:	50                   	push   %eax
406ce2:	56                   	push   %esi
406ce3:	ff 74 24 28          	push   0x28(%esp)
406ce7:	c7 44 24 38 00 01 00 	movl   $0x100,0x38(%esp)
406cee:	00
406cef:	ff 15 08 f0 40 00    	call   *0x40f008
406cf5:	85 c0                	test   %eax,%eax
406cf7:	74 c3                	je     0x406cbc
406cf9:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
406cfe:	74 0e                	je     0x406d0e
406d00:	ff 74 24 0c          	push   0xc(%esp)
406d04:	ff 15 00 f0 40 00    	call   *0x40f000
406d0a:	89 74 24 0c          	mov    %esi,0xc(%esp)
406d0e:	53                   	push   %ebx
406d0f:	8b cf                	mov    %edi,%ecx
406d11:	e8 7a 00 00 00       	call   0x406d90
406d16:	8b f0                	mov    %eax,%esi
406d18:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
406d1d:	74 0a                	je     0x406d29
406d1f:	ff 74 24 0c          	push   0xc(%esp)
406d23:	ff 15 00 f0 40 00    	call   *0x40f000
406d29:	8b 8c 24 2c 02 00 00 	mov    0x22c(%esp),%ecx
406d30:	8b c6                	mov    %esi,%eax
406d32:	5f                   	pop    %edi
406d33:	5e                   	pop    %esi
406d34:	5b                   	pop    %ebx
406d35:	33 cc                	xor    %esp,%ecx
406d37:	e8 24 2b 00 00       	call   0x409860
406d3c:	8b e5                	mov    %ebp,%esp
406d3e:	5d                   	pop    %ebp
406d3f:	c2 04 00             	ret    $0x4
406d42:	8b ff                	mov    %edi,%edi
406d44:	55                   	push   %ebp
406d45:	8b ec                	mov    %esp,%ebp
406d47:	51                   	push   %ecx
406d48:	33 c9                	xor    %ecx,%ecx
406d4a:	8d 45 fc             	lea    -0x4(%ebp),%eax
406d4d:	51                   	push   %ecx
406d4e:	51                   	push   %ecx
406d4f:	51                   	push   %ecx
406d50:	51                   	push   %ecx
406d51:	51                   	push   %ecx
406d52:	51                   	push   %ecx
406d53:	51                   	push   %ecx
406d54:	50                   	push   %eax
406d55:	51                   	push   %ecx
406d56:	51                   	push   %ecx
406d57:	51                   	push   %ecx
406d58:	ff 75 08             	push   0x8(%ebp)
406d5b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406d5e:	ff 15 04 f0 40 00    	call   *0x40f004
406d64:	85 c0                	test   %eax,%eax
406d66:	74 04                	je     0x406d6c
406d68:	33 c0                	xor    %eax,%eax
406d6a:	eb 09                	jmp    0x406d75
406d6c:	33 c0                	xor    %eax,%eax
406d6e:	3b 45 fc             	cmp    -0x4(%ebp),%eax
406d71:	1b c0                	sbb    %eax,%eax
406d73:	f7 d8                	neg    %eax
406d75:	c9                   	leave
406d76:	c2 04 00             	ret    $0x4
406d79:	8b ff                	mov    %edi,%edi
406d7b:	56                   	push   %esi
406d7c:	8b f1                	mov    %ecx,%esi
406d7e:	83 3e 00             	cmpl   $0x0,(%esi)
406d81:	74 0b                	je     0x406d8e
406d83:	ff 36                	push   (%esi)
406d85:	ff 15 00 f0 40 00    	call   *0x40f000
406d8b:	83 26 00             	andl   $0x0,(%esi)
406d8e:	5e                   	pop    %esi
406d8f:	c3                   	ret
406d90:	8b ff                	mov    %edi,%edi
406d92:	55                   	push   %ebp
406d93:	8b ec                	mov    %esp,%ebp
406d95:	53                   	push   %ebx
406d96:	56                   	push   %esi
406d97:	8b f1                	mov    %ecx,%esi
406d99:	33 db                	xor    %ebx,%ebx
406d9b:	57                   	push   %edi
406d9c:	39 5e 04             	cmp    %ebx,0x4(%esi)
406d9f:	75 45                	jne    0x406de6
406da1:	39 5e 08             	cmp    %ebx,0x8(%esi)
406da4:	75 40                	jne    0x406de6
406da6:	68 a8 27 40 00       	push   $0x4027a8
406dab:	ff 15 88 f0 40 00    	call   *0x40f088
406db1:	85 c0                	test   %eax,%eax
406db3:	74 11                	je     0x406dc6
406db5:	68 fc 27 40 00       	push   $0x4027fc
406dba:	50                   	push   %eax
406dbb:	ff 15 80 f0 40 00    	call   *0x40f080
406dc1:	89 46 04             	mov    %eax,0x4(%esi)
406dc4:	eb 20                	jmp    0x406de6
406dc6:	53                   	push   %ebx
406dc7:	53                   	push   %ebx
406dc8:	68 0c 28 40 00       	push   $0x40280c
406dcd:	ff 15 84 f0 40 00    	call   *0x40f084
406dd3:	85 c0                	test   %eax,%eax
406dd5:	74 0f                	je     0x406de6
406dd7:	68 28 28 40 00       	push   $0x402828
406ddc:	50                   	push   %eax
406ddd:	ff 15 80 f0 40 00    	call   *0x40f080
406de3:	89 46 08             	mov    %eax,0x8(%esi)
406de6:	8b 7e 04             	mov    0x4(%esi),%edi
406de9:	85 ff                	test   %edi,%edi
406deb:	74 13                	je     0x406e00
406ded:	53                   	push   %ebx
406dee:	53                   	push   %ebx
406def:	ff 75 08             	push   0x8(%ebp)
406df2:	8b cf                	mov    %edi,%ecx
406df4:	ff 36                	push   (%esi)
406df6:	ff 15 20 f2 40 00    	call   *0x40f220
406dfc:	ff d7                	call   *%edi
406dfe:	eb 1e                	jmp    0x406e1e
406e00:	8b 7e 08             	mov    0x8(%esi),%edi
406e03:	85 ff                	test   %edi,%edi
406e05:	74 11                	je     0x406e18
406e07:	ff 75 08             	push   0x8(%ebp)
406e0a:	8b cf                	mov    %edi,%ecx
406e0c:	ff 36                	push   (%esi)
406e0e:	ff 15 20 f2 40 00    	call   *0x40f220
406e14:	ff d7                	call   *%edi
406e16:	eb 06                	jmp    0x406e1e
406e18:	ff 15 7c f0 40 00    	call   *0x40f07c
406e1e:	5f                   	pop    %edi
406e1f:	5e                   	pop    %esi
406e20:	5b                   	pop    %ebx
406e21:	5d                   	pop    %ebp
406e22:	c2 04 00             	ret    $0x4
406e25:	85 c9                	test   %ecx,%ecx
406e27:	7e 09                	jle    0x406e32
406e29:	0f b7 c9             	movzwl %cx,%ecx
406e2c:	81 c9 00 00 07 80    	or     $0x80070000,%ecx
406e32:	8b c1                	mov    %ecx,%eax
406e34:	c3                   	ret
406e35:	8b ff                	mov    %edi,%edi
406e37:	55                   	push   %ebp
406e38:	8b ec                	mov    %esp,%ebp
406e3a:	51                   	push   %ecx
406e3b:	51                   	push   %ecx
406e3c:	53                   	push   %ebx
406e3d:	56                   	push   %esi
406e3e:	57                   	push   %edi
406e3f:	8b f9                	mov    %ecx,%edi
406e41:	e8 ec 07 00 00       	call   0x407632
406e46:	8b 1f                	mov    (%edi),%ebx
406e48:	33 d2                	xor    %edx,%edx
406e4a:	0f b7 03             	movzwl (%ebx),%eax
406e4d:	66 3b d0             	cmp    %ax,%dx
406e50:	0f 84 2d 01 00 00    	je     0x406f83
406e56:	8b 75 08             	mov    0x8(%ebp),%esi
406e59:	6a 27                	push   $0x27
406e5b:	8d 96 00 20 00 00    	lea    0x2000(%esi),%edx
406e61:	89 55 fc             	mov    %edx,-0x4(%ebp)
406e64:	5a                   	pop    %edx
406e65:	66 3b d0             	cmp    %ax,%dx
406e68:	0f 85 a8 00 00 00    	jne    0x406f16
406e6e:	53                   	push   %ebx
406e6f:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406e75:	8b d0                	mov    %eax,%edx
406e77:	33 db                	xor    %ebx,%ebx
406e79:	89 17                	mov    %edx,(%edi)
406e7b:	0f b7 0a             	movzwl (%edx),%ecx
406e7e:	8b c1                	mov    %ecx,%eax
406e80:	66 3b d9             	cmp    %cx,%bx
406e83:	74 6e                	je     0x406ef3
406e85:	6a 27                	push   $0x27
406e87:	5b                   	pop    %ebx
406e88:	66 3b d8             	cmp    %ax,%bx
406e8b:	75 0c                	jne    0x406e99
406e8d:	52                   	push   %edx
406e8e:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406e94:	66 3b 18             	cmp    (%eax),%bx
406e97:	75 5a                	jne    0x406ef3
406e99:	8b 1f                	mov    (%edi),%ebx
406e9b:	6a 27                	push   $0x27
406e9d:	58                   	pop    %eax
406e9e:	66 3b 03             	cmp    (%ebx),%ax
406ea1:	75 0b                	jne    0x406eae
406ea3:	53                   	push   %ebx
406ea4:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406eaa:	8b d8                	mov    %eax,%ebx
406eac:	89 1f                	mov    %ebx,(%edi)
406eae:	53                   	push   %ebx
406eaf:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406eb5:	8b d0                	mov    %eax,%edx
406eb7:	8b ca                	mov    %edx,%ecx
406eb9:	89 17                	mov    %edx,(%edi)
406ebb:	2b cb                	sub    %ebx,%ecx
406ebd:	d1 f9                	sar    $1,%ecx
406ebf:	8d 41 01             	lea    0x1(%ecx),%eax
406ec2:	8d 04 46             	lea    (%esi,%eax,2),%eax
406ec5:	3b 45 fc             	cmp    -0x4(%ebp),%eax
406ec8:	0f 83 b5 00 00 00    	jae    0x406f83
406ece:	85 c9                	test   %ecx,%ecx
406ed0:	7e 13                	jle    0x406ee5
406ed2:	2b de                	sub    %esi,%ebx
406ed4:	66 8b 04 33          	mov    (%ebx,%esi,1),%ax
406ed8:	66 89 06             	mov    %ax,(%esi)
406edb:	83 c6 02             	add    $0x2,%esi
406ede:	83 e9 01             	sub    $0x1,%ecx
406ee1:	75 f1                	jne    0x406ed4
406ee3:	8b 17                	mov    (%edi),%edx
406ee5:	0f b7 02             	movzwl (%edx),%eax
406ee8:	33 db                	xor    %ebx,%ebx
406eea:	8b c8                	mov    %eax,%ecx
406eec:	66 3b d8             	cmp    %ax,%bx
406eef:	74 02                	je     0x406ef3
406ef1:	eb 92                	jmp    0x406e85
406ef3:	8b 07                	mov    (%edi),%eax
406ef5:	33 c9                	xor    %ecx,%ecx
406ef7:	66 3b 08             	cmp    (%eax),%cx
406efa:	0f 84 83 00 00 00    	je     0x406f83
406f00:	3b 75 fc             	cmp    -0x4(%ebp),%esi
406f03:	73 7e                	jae    0x406f83
406f05:	33 c0                	xor    %eax,%eax
406f07:	66 89 06             	mov    %ax,(%esi)
406f0a:	ff 37                	push   (%edi)
406f0c:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406f12:	89 07                	mov    %eax,(%edi)
406f14:	eb 69                	jmp    0x406f7f
406f16:	0f b7 c0             	movzwl %ax,%eax
406f19:	83 f8 09             	cmp    $0x9,%eax
406f1c:	72 0f                	jb     0x406f2d
406f1e:	83 f8 0a             	cmp    $0xa,%eax
406f21:	76 52                	jbe    0x406f75
406f23:	83 f8 0d             	cmp    $0xd,%eax
406f26:	74 4d                	je     0x406f75
406f28:	83 f8 20             	cmp    $0x20,%eax
406f2b:	74 48                	je     0x406f75
406f2d:	53                   	push   %ebx