40682e:	ff b5 d4 fd ff ff    	push   -0x22c(%ebp)
406834:	8b cb                	mov    %ebx,%ecx
406836:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
40683c:	56                   	push   %esi
40683d:	ff 15 c4 a4 44 00    	call   *0x44a4c4
406843:	ff d3                	call   *%ebx
406845:	8b f8                	mov    %eax,%edi
406847:	85 ff                	test   %edi,%edi
406849:	0f 84 72 ff ff ff    	je     0x4067c1
40684f:	e9 7a ff ff ff       	jmp    0x4067ce
406854:	8b ff                	mov    %edi,%edi
406856:	55                   	push   %ebp
406857:	8b ec                	mov    %esp,%ebp
406859:	81 ec a4 01 00 00    	sub    $0x1a4,%esp
40685f:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
406864:	33 c5                	xor    %ebp,%eax
406866:	89 45 fc             	mov    %eax,-0x4(%ebp)
406869:	53                   	push   %ebx
40686a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40686d:	56                   	push   %esi
40686e:	8b f1                	mov    %ecx,%esi
406870:	89 95 98 fe ff ff    	mov    %edx,-0x168(%ebp)
406876:	89 9d 94 fe ff ff    	mov    %ebx,-0x16c(%ebp)
40687c:	c7 85 9c fe ff ff 01 	movl   $0x1,-0x164(%ebp)
406883:	00 00 00
406886:	57                   	push   %edi
406887:	85 f6                	test   %esi,%esi
406889:	0f 85 17 3c 01 00    	jne    0x41a4a6
40688f:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
406895:	50                   	push   %eax
406896:	ff 15 c4 a2 44 00    	call   *0x44a2c4
40689c:	8d 85 8c fe ff ff    	lea    -0x174(%ebp),%eax
4068a2:	50                   	push   %eax
4068a3:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
4068a9:	50                   	push   %eax
4068aa:	ff 15 f0 a2 44 00    	call   *0x44a2f0
4068b0:	8d 85 84 fe ff ff    	lea    -0x17c(%ebp),%eax
4068b6:	50                   	push   %eax
4068b7:	8d 85 8c fe ff ff    	lea    -0x174(%ebp),%eax
4068bd:	50                   	push   %eax
4068be:	ff 15 c0 a0 44 00    	call   *0x44a0c0
4068c4:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
4068ca:	50                   	push   %eax
4068cb:	8d 85 84 fe ff ff    	lea    -0x17c(%ebp),%eax
4068d1:	50                   	push   %eax
4068d2:	ff 15 ec a2 44 00    	call   *0x44a2ec
4068d8:	33 c0                	xor    %eax,%eax
4068da:	89 85 a4 fe ff ff    	mov    %eax,-0x15c(%ebp)
4068e0:	38 05 55 67 43 00    	cmp    %al,0x436755
4068e6:	0f 84 91 3c 01 00    	je     0x41a57d
4068ec:	89 85 a0 fe ff ff    	mov    %eax,-0x160(%ebp)
4068f2:	be 80 00 00 00       	mov    $0x80,%esi
4068f7:	56                   	push   %esi
4068f8:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
4068fe:	50                   	push   %eax
4068ff:	6a 1f                	push   $0x1f
406901:	e8 8b 1e 00 00       	call   0x408791
406906:	50                   	push   %eax
406907:	ff 15 84 a1 44 00    	call   *0x44a184
40690d:	85 c0                	test   %eax,%eax
40690f:	0f 84 b2 3b 01 00    	je     0x41a4c7
406915:	66 8b 85 b8 fe ff ff 	mov    -0x148(%ebp),%ax
40691c:	8d b5 b8 fe ff ff    	lea    -0x148(%ebp),%esi
406922:	6a 02                	push   $0x2
406924:	5f                   	pop    %edi
406925:	66 85 c0             	test   %ax,%ax
406928:	74 42                	je     0x40696c
40692a:	8b 9d a0 fe ff ff    	mov    -0x160(%ebp),%ebx
406930:	6a 64                	push   $0x64
406932:	0f b7 c8             	movzwl %ax,%ecx
406935:	58                   	pop    %eax
406936:	66 83 f9 27          	cmp    $0x27,%cx
40693a:	0f 84 9f 3b 01 00    	je     0x41a4df
406940:	85 db                	test   %ebx,%ebx
406942:	75 13                	jne    0x406957
406944:	66 3b c8             	cmp    %ax,%cx
406947:	0f 84 f3 00 00 00    	je     0x406a40
40694d:	66 83 f9 4d          	cmp    $0x4d,%cx
406951:	0f 84 e9 00 00 00    	je     0x406a40
406957:	03 f7                	add    %edi,%esi
406959:	0f b7 06             	movzwl (%esi),%eax
40695c:	6a 64                	push   $0x64
40695e:	8b c8                	mov    %eax,%ecx
406960:	66 85 c0             	test   %ax,%ax
406963:	58                   	pop    %eax
406964:	75 d0                	jne    0x406936
406966:	8b 9d 94 fe ff ff    	mov    -0x16c(%ebp),%ebx
40696c:	ff 35 50 67 43 00    	push   0x436750
406972:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
406978:	ff 35 4c 67 43 00    	push   0x43674c
40697e:	50                   	push   %eax
40697f:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
406985:	50                   	push   %eax
406986:	33 c0                	xor    %eax,%eax
406988:	50                   	push   %eax
406989:	e8 03 1e 00 00       	call   0x408791
40698e:	50                   	push   %eax
40698f:	ff 15 54 a0 44 00    	call   *0x44a054
406995:	85 c0                	test   %eax,%eax
406997:	0f 84 f9 00 00 00    	je     0x406a96
40699d:	8b 35 4c 67 43 00    	mov    0x43674c,%esi
4069a3:	85 f6                	test   %esi,%esi
4069a5:	0f 84 eb 00 00 00    	je     0x406a96
4069ab:	0f b7 8d ac fe ff ff 	movzwl -0x154(%ebp),%ecx
4069b2:	e8 b1 f4 ff ff       	call   0x405e68
4069b7:	50                   	push   %eax
4069b8:	6a 20                	push   $0x20
4069ba:	5a                   	pop    %edx
4069bb:	8d 4d b8             	lea    -0x48(%ebp),%ecx
4069be:	e8 dd 89 00 00       	call   0x40f3a0
4069c3:	85 db                	test   %ebx,%ebx
4069c5:	0f 84 6a 3c 01 00    	je     0x41a635
4069cb:	83 bd 9c fe ff ff 00 	cmpl   $0x0,-0x164(%ebp)
4069d2:	0f 84 b9 3c 01 00    	je     0x41a691
4069d8:	83 bd 98 fe ff ff 01 	cmpl   $0x1,-0x168(%ebp)
4069df:	0f 85 ac 3c 01 00    	jne    0x41a691
4069e5:	e8 4a 2a 00 00       	call   0x409434
4069ea:	8b 55 0c             	mov    0xc(%ebp),%edx
4069ed:	8b cb                	mov    %ebx,%ecx
4069ef:	84 c0                	test   %al,%al
4069f1:	0f 85 7c 3c 01 00    	jne    0x41a673
4069f7:	8d 45 b8             	lea    -0x48(%ebp),%eax
4069fa:	50                   	push   %eax
4069fb:	e8 a0 89 00 00       	call   0x40f3a0
406a00:	8b 55 0c             	mov    0xc(%ebp),%edx
406a03:	8b cb                	mov    %ebx,%ecx
406a05:	68 4c 23 40 00       	push   $0x40234c
406a0a:	e8 31 92 00 00       	call   0x40fc40
406a0f:	56                   	push   %esi
406a10:	8b 55 0c             	mov    0xc(%ebp),%edx
406a13:	8b cb                	mov    %ebx,%ecx
406a15:	e8 26 92 00 00       	call   0x40fc40
406a1a:	8d 4b 02             	lea    0x2(%ebx),%ecx
406a1d:	33 d2                	xor    %edx,%edx
406a1f:	66 8b 03             	mov    (%ebx),%ax
406a22:	03 df                	add    %edi,%ebx
406a24:	66 3b c2             	cmp    %dx,%ax
406a27:	75 f6                	jne    0x406a1f
406a29:	2b d9                	sub    %ecx,%ebx
406a2b:	d1 fb                	sar    $1,%ebx
406a2d:	8b c3                	mov    %ebx,%eax
406a2f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406a32:	5f                   	pop    %edi
406a33:	5e                   	pop    %esi
406a34:	33 cd                	xor    %ebp,%ecx
406a36:	5b                   	pop    %ebx
406a37:	e8 f4 00 01 00       	call   0x416b30
406a3c:	c9                   	leave
406a3d:	c2 08 00             	ret    $0x8
406a40:	33 c0                	xor    %eax,%eax
406a42:	8b d0                	mov    %eax,%edx
406a44:	03 f7                	add    %edi,%esi
406a46:	42                   	inc    %edx
406a47:	66 39 0e             	cmp    %cx,(%esi)
406a4a:	74 f8                	je     0x406a44
406a4c:	8b c2                	mov    %edx,%eax
406a4e:	89 b5 a0 fe ff ff    	mov    %esi,-0x160(%ebp)
406a54:	f7 d8                	neg    %eax
406a56:	8d 34 46             	lea    (%esi,%eax,2),%esi
406a59:	83 fa 01             	cmp    $0x1,%edx
406a5c:	0f 85 8d 3a 01 00    	jne    0x41a4ef
406a62:	8b ce                	mov    %esi,%ecx
406a64:	8d 51 02             	lea    0x2(%ecx),%edx
406a67:	66 8b 01             	mov    (%ecx),%ax
406a6a:	03 cf                	add    %edi,%ecx
406a6c:	66 3b 85 a4 fe ff ff 	cmp    -0x15c(%ebp),%ax
406a73:	75 f2                	jne    0x406a67
406a75:	2b ca                	sub    %edx,%ecx
406a77:	d1 f9                	sar    $1,%ecx
406a79:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
406a80:	50                   	push   %eax
406a81:	8d 46 02             	lea    0x2(%esi),%eax
406a84:	56                   	push   %esi
406a85:	50                   	push   %eax
406a86:	e8 b7 11 01 00       	call   0x417c42
406a8b:	83 c4 0c             	add    $0xc,%esp
406a8e:	83 c6 04             	add    $0x4,%esi
406a91:	e9 c3 fe ff ff       	jmp    0x406959
406a96:	33 c9                	xor    %ecx,%ecx
406a98:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
406a9e:	51                   	push   %ecx
406a9f:	51                   	push   %ecx
406aa0:	50                   	push   %eax
406aa1:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
406aa7:	50                   	push   %eax
406aa8:	51                   	push   %ecx
406aa9:	e8 e3 1c 00 00       	call   0x408791
406aae:	50                   	push   %eax
406aaf:	ff 15 54 a0 44 00    	call   *0x44a054
406ab5:	8b f0                	mov    %eax,%esi
406ab7:	85 f6                	test   %esi,%esi
406ab9:	0f 84 91 3a 01 00    	je     0x41a550
406abf:	46                   	inc    %esi
406ac0:	8d 04 36             	lea    (%esi,%esi,1),%eax
406ac3:	50                   	push   %eax
406ac4:	ff 35 4c 67 43 00    	push   0x43674c
406aca:	ff 15 0c a4 44 00    	call   *0x44a40c
406ad0:	59                   	pop    %ecx
406ad1:	59                   	pop    %ecx
406ad2:	85 c0                	test   %eax,%eax
406ad4:	0f 84 90 3a 01 00    	je     0x41a56a
406ada:	56                   	push   %esi
406adb:	50                   	push   %eax
406adc:	a3 4c 67 43 00       	mov    %eax,0x43674c
406ae1:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
406ae7:	50                   	push   %eax
406ae8:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
406aee:	89 35 50 67 43 00    	mov    %esi,0x436750
406af4:	50                   	push   %eax
406af5:	33 f6                	xor    %esi,%esi
406af7:	56                   	push   %esi
406af8:	e8 94 1c 00 00       	call   0x408791
406afd:	50                   	push   %eax
406afe:	ff 15 54 a0 44 00    	call   *0x44a054
406b04:	85 c0                	test   %eax,%eax
406b06:	0f 84 4f 3a 01 00    	je     0x41a55b
406b0c:	8b 35 4c 67 43 00    	mov    0x43674c,%esi
406b12:	e9 94 fe ff ff       	jmp    0x4069ab
406b17:	cc                   	int3
406b18:	cc                   	int3
406b19:	cc                   	int3
406b1a:	cc                   	int3
406b1b:	cc                   	int3
406b1c:	cc                   	int3
406b1d:	cc                   	int3
406b1e:	cc                   	int3
406b1f:	cc                   	int3
406b20:	8b ff                	mov    %edi,%edi
406b22:	55                   	push   %ebp
406b23:	8b ec                	mov    %esp,%ebp
406b25:	83 e4 f8             	and    $0xfffffff8,%esp
406b28:	51                   	push   %ecx
406b29:	8b 45 08             	mov    0x8(%ebp),%eax
406b2c:	53                   	push   %ebx
406b2d:	56                   	push   %esi
406b2e:	57                   	push   %edi
406b2f:	8b 78 38             	mov    0x38(%eax),%edi
406b32:	8b 58 3c             	mov    0x3c(%eax),%ebx
406b35:	6a 28                	push   $0x28
406b37:	59                   	pop    %ecx
406b38:	e8 93 71 00 00       	call   0x40dcd0
406b3d:	8b f0                	mov    %eax,%esi
406b3f:	85 f6                	test   %esi,%esi
406b41:	0f 84 65 3b 01 00    	je     0x41a6ac
406b47:	68 00 80 00 00       	push   $0x8000
406b4c:	6a 00                	push   $0x0
406b4e:	56                   	push   %esi
406b4f:	ff 15 94 a3 44 00    	call   *0x44a394
406b55:	83 c4 0c             	add    $0xc,%esp
406b58:	85 c0                	test   %eax,%eax
406b5a:	0f 85 41 3b 01 00    	jne    0x41a6a1
406b60:	8b 0e                	mov    (%esi),%ecx
406b62:	e8 dc f8 ff ff       	call   0x406443
406b67:	8b 4e 04             	mov    0x4(%esi),%ecx
406b6a:	e8 d4 f8 ff ff       	call   0x406443
406b6f:	a1 e8 65 43 00       	mov    0x4365e8,%eax
406b74:	8b c8                	mov    %eax,%ecx
406b76:	40                   	inc    %eax
406b77:	a3 e8 65 43 00       	mov    %eax,0x4365e8
406b7c:	85 c9                	test   %ecx,%ecx
406b7e:	0f 85 6e 01 00 00    	jne    0x406cf2
406b84:	21 4e 20             	and    %ecx,0x20(%esi)
406b87:	89 35 8c 67 43 00    	mov    %esi,0x43678c
406b8d:	33 c9                	xor    %ecx,%ecx
406b8f:	8b c6                	mov    %esi,%eax
406b91:	41                   	inc    %ecx
406b92:	a3 88 67 43 00       	mov    %eax,0x436788
406b97:	e8 0c 36 00 00       	call   0x40a1a8
406b9c:	89 46 0c             	mov    %eax,0xc(%esi)
406b9f:	83 f8 ff             	cmp    $0xffffffff,%eax
406ba2:	0f 84 0c 3b 01 00    	je     0x41a6b4
406ba8:	8b 4e 04             	mov    0x4(%esi),%ecx
406bab:	33 d2                	xor    %edx,%edx
406bad:	42                   	inc    %edx
406bae:	e8 23 36 00 00       	call   0x40a1d6
406bb3:	83 f8 ff             	cmp    $0xffffffff,%eax
406bb6:	0f 84 02 3b 01 00    	je     0x41a6be
406bbc:	8b 4e 04             	mov    0x4(%esi),%ecx
406bbf:	e8 a8 35 00 00       	call   0x40a16c
406bc4:	83 66 04 00          	andl   $0x0,0x4(%esi)
406bc8:	83 3f 00             	cmpl   $0x0,(%edi)
406bcb:	7f 0b                	jg     0x406bd8
406bcd:	8d 54 24 0c          	lea    0xc(%esp),%edx
406bd1:	8b cf                	mov    %edi,%ecx
406bd3:	e8 78 7d 00 00       	call   0x40e950
406bd8:	33 c9                	xor    %ecx,%ecx
406bda:	8b d7                	mov    %edi,%edx
406bdc:	41                   	inc    %ecx
406bdd:	e8 8e 78 00 00       	call   0x40e470
406be2:	83 3d e4 65 43 00 00 	cmpl   $0x0,0x4365e4
406be9:	8b f8                	mov    %eax,%edi
406beb:	74 1e                	je     0x406c0b
406bed:	6a 01                	push   $0x1
406bef:	33 c0                	xor    %eax,%eax
406bf1:	50                   	push   %eax
406bf2:	50                   	push   %eax
406bf3:	50                   	push   %eax
406bf4:	50                   	push   %eax
406bf5:	ff 36                	push   (%esi)
406bf7:	ff 15 2c a4 44 00    	call   *0x44a42c
406bfd:	59                   	pop    %ecx
406bfe:	50                   	push   %eax
406bff:	ff 35 e4 65 43 00    	push   0x4365e4
406c05:	ff 15 20 a1 44 00    	call   *0x44a120
406c0b:	8b 4e 0c             	mov    0xc(%esi),%ecx
406c0e:	33 d2                	xor    %edx,%edx
406c10:	42                   	inc    %edx
406c11:	e8 c0 35 00 00       	call   0x40a1d6
406c16:	83 f8 ff             	cmp    $0xffffffff,%eax
406c19:	0f 84 9f 3a 01 00    	je     0x41a6be
406c1f:	8b 4e 0c             	mov    0xc(%esi),%ecx
406c22:	e8 45 35 00 00       	call   0x40a16c
406c27:	33 c9                	xor    %ecx,%ecx
406c29:	89 4e 0c             	mov    %ecx,0xc(%esi)
406c2c:	85 ff                	test   %edi,%edi
406c2e:	0f 85 98 3a 01 00    	jne    0x41a6cc
406c34:	a1 e4 65 43 00       	mov    0x4365e4,%eax
406c39:	89 46 10             	mov    %eax,0x10(%esi)
406c3c:	a1 98 25 43 00       	mov    0x432598,%eax
406c41:	89 46 18             	mov    %eax,0x18(%esi)
406c44:	89 0d e4 65 43 00    	mov    %ecx,0x4365e4
406c4a:	89 0d 98 25 43 00    	mov    %ecx,0x432598
406c50:	e8 53 35 00 00       	call   0x40a1a8
406c55:	89 46 08             	mov    %eax,0x8(%esi)
406c58:	83 f8 ff             	cmp    $0xffffffff,%eax
406c5b:	0f 84 59 3a 01 00    	je     0x41a6ba
406c61:	8b 0e                	mov    (%esi),%ecx
406c63:	33 d2                	xor    %edx,%edx
406c65:	e8 6c 35 00 00       	call   0x40a1d6
406c6a:	83 f8 ff             	cmp    $0xffffffff,%eax
406c6d:	0f 84 4b 3a 01 00    	je     0x41a6be
406c73:	8b 0e                	mov    (%esi),%ecx
406c75:	e8 f2 34 00 00       	call   0x40a16c
406c7a:	21 3e                	and    %edi,(%esi)
406c7c:	39 3b                	cmp    %edi,(%ebx)
406c7e:	7f 0b                	jg     0x406c8b
406c80:	8d 54 24 0c          	lea    0xc(%esp),%edx
406c84:	8b cb                	mov    %ebx,%ecx
406c86:	e8 c5 7c 00 00       	call   0x40e950
406c8b:	33 c9                	xor    %ecx,%ecx
406c8d:	8b d3                	mov    %ebx,%edx
406c8f:	41                   	inc    %ecx
406c90:	e8 db 77 00 00       	call   0x40e470
406c95:	8b 4e 08             	mov    0x8(%esi),%ecx
406c98:	33 d2                	xor    %edx,%edx
406c9a:	8b f8                	mov    %eax,%edi
406c9c:	e8 35 35 00 00       	call   0x40a1d6
406ca1:	83 f8 ff             	cmp    $0xffffffff,%eax
406ca4:	0f 84 14 3a 01 00    	je     0x41a6be
406caa:	8b 4e 08             	mov    0x8(%esi),%ecx