40794f:	75 5c                	jne    0x4079ad
407951:	ff 4e 04             	decl   0x4(%esi)
407954:	8b 5d 08             	mov    0x8(%ebp),%ebx
407957:	78 0e                	js     0x407967
407959:	8b 06                	mov    (%esi),%eax
40795b:	88 18                	mov    %bl,(%eax)
40795d:	8b 0e                	mov    (%esi),%ecx
40795f:	0f b6 01             	movzbl (%ecx),%eax
407962:	41                   	inc    %ecx
407963:	89 0e                	mov    %ecx,(%esi)
407965:	eb 0c                	jmp    0x407973
407967:	0f be c3             	movsbl %bl,%eax
40796a:	56                   	push   %esi
40796b:	50                   	push   %eax
40796c:	e8 ef 3c 00 00       	call   0x40b660
407971:	59                   	pop    %ecx
407972:	59                   	pop    %ecx
407973:	83 f8 ff             	cmp    $0xffffffff,%eax
407976:	75 09                	jne    0x407981
407978:	66 0d ff ff          	or     $0xffff,%ax
40797c:	e9 ec 00 00 00       	jmp    0x407a6d
407981:	ff 4e 04             	decl   0x4(%esi)
407984:	78 0e                	js     0x407994
407986:	8b 06                	mov    (%esi),%eax
407988:	88 38                	mov    %bh,(%eax)
40798a:	8b 0e                	mov    (%esi),%ecx
40798c:	0f b6 01             	movzbl (%ecx),%eax
40798f:	41                   	inc    %ecx
407990:	89 0e                	mov    %ecx,(%esi)
407992:	eb 0c                	jmp    0x4079a0
407994:	0f be c7             	movsbl %bh,%eax
407997:	56                   	push   %esi
407998:	50                   	push   %eax
407999:	e8 c2 3c 00 00       	call   0x40b660
40799e:	59                   	pop    %ecx
40799f:	59                   	pop    %ecx
4079a0:	83 f8 ff             	cmp    $0xffffffff,%eax
4079a3:	74 d3                	je     0x407978
4079a5:	66 8b c3             	mov    %bx,%ax
4079a8:	e9 c0 00 00 00       	jmp    0x407a6d
4079ad:	56                   	push   %esi
4079ae:	e8 93 70 00 00       	call   0x40ea46
4079b3:	83 f8 ff             	cmp    $0xffffffff,%eax
4079b6:	59                   	pop    %ecx
4079b7:	74 2e                	je     0x4079e7
4079b9:	56                   	push   %esi
4079ba:	e8 87 70 00 00       	call   0x40ea46
4079bf:	83 f8 fe             	cmp    $0xfffffffe,%eax
4079c2:	59                   	pop    %ecx
4079c3:	74 22                	je     0x4079e7
4079c5:	56                   	push   %esi
4079c6:	e8 7b 70 00 00       	call   0x40ea46
4079cb:	c1 f8 05             	sar    $0x5,%eax
4079ce:	56                   	push   %esi
4079cf:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
4079d6:	e8 6b 70 00 00       	call   0x40ea46
4079db:	83 e0 1f             	and    $0x1f,%eax
4079de:	6b c0 28             	imul   $0x28,%eax,%eax
4079e1:	03 03                	add    (%ebx),%eax
4079e3:	59                   	pop    %ecx
4079e4:	59                   	pop    %ecx
4079e5:	eb 02                	jmp    0x4079e9
4079e7:	8b c7                	mov    %edi,%eax
4079e9:	f6 40 04 80          	testb  $0x80,0x4(%eax)
4079ed:	74 5e                	je     0x407a4d
4079ef:	ff 75 08             	push   0x8(%ebp)
4079f2:	8d 45 f4             	lea    -0xc(%ebp),%eax
4079f5:	6a 05                	push   $0x5
4079f7:	50                   	push   %eax
4079f8:	8d 45 f0             	lea    -0x10(%ebp),%eax
4079fb:	50                   	push   %eax
4079fc:	e8 41 73 00 00       	call   0x40ed42
407a01:	83 c4 10             	add    $0x10,%esp
407a04:	85 c0                	test   %eax,%eax
407a06:	0f 85 6c ff ff ff    	jne    0x407978
407a0c:	33 db                	xor    %ebx,%ebx
407a0e:	39 5d f0             	cmp    %ebx,-0x10(%ebp)
407a11:	7e 34                	jle    0x407a47
407a13:	ff 4e 04             	decl   0x4(%esi)
407a16:	78 12                	js     0x407a2a
407a18:	8b 06                	mov    (%esi),%eax
407a1a:	8a 4c 1d f4          	mov    -0xc(%ebp,%ebx,1),%cl
407a1e:	88 08                	mov    %cl,(%eax)
407a20:	8b 0e                	mov    (%esi),%ecx
407a22:	0f b6 01             	movzbl (%ecx),%eax
407a25:	41                   	inc    %ecx
407a26:	89 0e                	mov    %ecx,(%esi)
407a28:	eb 0e                	jmp    0x407a38
407a2a:	0f be 44 1d f4       	movsbl -0xc(%ebp,%ebx,1),%eax
407a2f:	56                   	push   %esi
407a30:	50                   	push   %eax
407a31:	e8 2a 3c 00 00       	call   0x40b660
407a36:	59                   	pop    %ecx
407a37:	59                   	pop    %ecx
407a38:	83 f8 ff             	cmp    $0xffffffff,%eax
407a3b:	0f 84 37 ff ff ff    	je     0x407978
407a41:	43                   	inc    %ebx
407a42:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
407a45:	7c cc                	jl     0x407a13
407a47:	66 8b 45 08          	mov    0x8(%ebp),%ax
407a4b:	eb 20                	jmp    0x407a6d
407a4d:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
407a51:	78 0d                	js     0x407a60
407a53:	8b 0e                	mov    (%esi),%ecx
407a55:	8b 45 08             	mov    0x8(%ebp),%eax
407a58:	66 89 01             	mov    %ax,(%ecx)
407a5b:	83 06 02             	addl   $0x2,(%esi)
407a5e:	eb 0d                	jmp    0x407a6d
407a60:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
407a64:	56                   	push   %esi
407a65:	50                   	push   %eax
407a66:	e8 08 70 00 00       	call   0x40ea73
407a6b:	59                   	pop    %ecx
407a6c:	59                   	pop    %ecx
407a6d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407a70:	5f                   	pop    %edi
407a71:	5e                   	pop    %esi
407a72:	33 cd                	xor    %ebp,%ecx
407a74:	5b                   	pop    %ebx
407a75:	e8 bb e4 ff ff       	call   0x405f35
407a7a:	c9                   	leave
407a7b:	c3                   	ret
407a7c:	6a 0c                	push   $0xc
407a7e:	68 f0 a9 41 00       	push   $0x41a9f0
407a83:	e8 c0 5b 00 00       	call   0x40d648
407a88:	33 c0                	xor    %eax,%eax
407a8a:	8b 7d 0c             	mov    0xc(%ebp),%edi
407a8d:	33 f6                	xor    %esi,%esi
407a8f:	3b fe                	cmp    %esi,%edi
407a91:	0f 95 c0             	setne  %al
407a94:	3b c6                	cmp    %esi,%eax
407a96:	75 1e                	jne    0x407ab6
407a98:	e8 5d 19 00 00       	call   0x4093fa
407a9d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407aa3:	56                   	push   %esi
407aa4:	56                   	push   %esi
407aa5:	56                   	push   %esi
407aa6:	56                   	push   %esi
407aa7:	56                   	push   %esi
407aa8:	e8 a3 fb ff ff       	call   0x407650
407aad:	83 c4 14             	add    $0x14,%esp
407ab0:	66 0d ff ff          	or     $0xffff,%ax
407ab4:	eb 2e                	jmp    0x407ae4
407ab6:	89 7d 0c             	mov    %edi,0xc(%ebp)
407ab9:	57                   	push   %edi
407aba:	e8 46 0e 00 00       	call   0x408905
407abf:	59                   	pop    %ecx
407ac0:	89 75 fc             	mov    %esi,-0x4(%ebp)
407ac3:	57                   	push   %edi
407ac4:	ff 75 08             	push   0x8(%ebp)
407ac7:	e8 d2 fd ff ff       	call   0x40789e
407acc:	59                   	pop    %ecx
407acd:	59                   	pop    %ecx
407ace:	0f b7 c0             	movzwl %ax,%eax
407ad1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407ad4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407adb:	e8 0a 00 00 00       	call   0x407aea
407ae0:	66 8b 45 e4          	mov    -0x1c(%ebp),%ax
407ae4:	e8 a4 5b 00 00       	call   0x40d68d
407ae9:	c3                   	ret
407aea:	ff 75 0c             	push   0xc(%ebp)
407aed:	e8 65 0e 00 00       	call   0x408957
407af2:	59                   	pop    %ecx
407af3:	c3                   	ret
407af4:	55                   	push   %ebp
407af5:	8b ec                	mov    %esp,%ebp
407af7:	83 ec 10             	sub    $0x10,%esp
407afa:	a1 20 c5 41 00       	mov    0x41c520,%eax
407aff:	33 c5                	xor    %ebp,%eax
407b01:	89 45 fc             	mov    %eax,-0x4(%ebp)
407b04:	53                   	push   %ebx
407b05:	56                   	push   %esi
407b06:	8b 75 0c             	mov    0xc(%ebp),%esi
407b09:	57                   	push   %edi
407b0a:	8b 7d 08             	mov    0x8(%ebp),%edi
407b0d:	66 81 ff ff ff       	cmp    $0xffff,%di
407b12:	0f 84 5c 01 00 00    	je     0x407c74
407b18:	8b 46 0c             	mov    0xc(%esi),%eax
407b1b:	a8 01                	test   $0x1,%al
407b1d:	75 10                	jne    0x407b2f
407b1f:	84 c0                	test   %al,%al
407b21:	0f 89 4d 01 00 00    	jns    0x407c74
407b27:	a8 02                	test   $0x2,%al
407b29:	0f 85 45 01 00 00    	jne    0x407c74
407b2f:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
407b33:	75 07                	jne    0x407b3c
407b35:	56                   	push   %esi
407b36:	e8 22 72 00 00       	call   0x40ed5d
407b3b:	59                   	pop    %ecx
407b3c:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
407b40:	0f 85 01 01 00 00    	jne    0x407c47
407b46:	56                   	push   %esi
407b47:	e8 fa 6e 00 00       	call   0x40ea46
407b4c:	83 f8 ff             	cmp    $0xffffffff,%eax
407b4f:	59                   	pop    %ecx
407b50:	bb f0 cb 41 00       	mov    $0x41cbf0,%ebx
407b55:	74 2e                	je     0x407b85
407b57:	56                   	push   %esi
407b58:	e8 e9 6e 00 00       	call   0x40ea46
407b5d:	83 f8 fe             	cmp    $0xfffffffe,%eax
407b60:	59                   	pop    %ecx
407b61:	74 22                	je     0x407b85
407b63:	56                   	push   %esi
407b64:	e8 dd 6e 00 00       	call   0x40ea46
407b69:	c1 f8 05             	sar    $0x5,%eax
407b6c:	56                   	push   %esi
407b6d:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
407b74:	e8 cd 6e 00 00       	call   0x40ea46
407b79:	83 e0 1f             	and    $0x1f,%eax
407b7c:	6b c0 28             	imul   $0x28,%eax,%eax
407b7f:	03 07                	add    (%edi),%eax
407b81:	59                   	pop    %ecx
407b82:	59                   	pop    %ecx
407b83:	eb 02                	jmp    0x407b87
407b85:	8b c3                	mov    %ebx,%eax
407b87:	f6 40 04 80          	testb  $0x80,0x4(%eax)
407b8b:	0f 84 b3 00 00 00    	je     0x407c44
407b91:	56                   	push   %esi
407b92:	e8 af 6e 00 00       	call   0x40ea46
407b97:	83 f8 ff             	cmp    $0xffffffff,%eax
407b9a:	59                   	pop    %ecx
407b9b:	74 2e                	je     0x407bcb
407b9d:	56                   	push   %esi
407b9e:	e8 a3 6e 00 00       	call   0x40ea46
407ba3:	83 f8 fe             	cmp    $0xfffffffe,%eax
407ba6:	59                   	pop    %ecx
407ba7:	74 22                	je     0x407bcb
407ba9:	56                   	push   %esi
407baa:	e8 97 6e 00 00       	call   0x40ea46
407baf:	c1 f8 05             	sar    $0x5,%eax
407bb2:	56                   	push   %esi
407bb3:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
407bba:	e8 87 6e 00 00       	call   0x40ea46
407bbf:	83 e0 1f             	and    $0x1f,%eax
407bc2:	6b c0 28             	imul   $0x28,%eax,%eax
407bc5:	03 07                	add    (%edi),%eax
407bc7:	59                   	pop    %ecx
407bc8:	59                   	pop    %ecx
407bc9:	eb 02                	jmp    0x407bcd
407bcb:	8b c3                	mov    %ebx,%eax
407bcd:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
407bd1:	74 11                	je     0x407be4
407bd3:	8b 55 08             	mov    0x8(%ebp),%edx
407bd6:	6a 02                	push   $0x2
407bd8:	58                   	pop    %eax
407bd9:	88 55 f4             	mov    %dl,-0xc(%ebp)
407bdc:	88 75 f5             	mov    %dh,-0xb(%ebp)
407bdf:	89 45 f0             	mov    %eax,-0x10(%ebp)
407be2:	eb 1f                	jmp    0x407c03
407be4:	ff 75 08             	push   0x8(%ebp)
407be7:	8d 45 f4             	lea    -0xc(%ebp),%eax
407bea:	6a 05                	push   $0x5
407bec:	50                   	push   %eax
407bed:	8d 45 f0             	lea    -0x10(%ebp),%eax
407bf0:	50                   	push   %eax
407bf1:	e8 4c 71 00 00       	call   0x40ed42
407bf6:	83 c4 10             	add    $0x10,%esp
407bf9:	85 c0                	test   %eax,%eax
407bfb:	75 77                	jne    0x407c74
407bfd:	8b 45 f0             	mov    -0x10(%ebp),%eax
407c00:	8b 55 08             	mov    0x8(%ebp),%edx
407c03:	8b 4e 08             	mov    0x8(%esi),%ecx
407c06:	03 c8                	add    %eax,%ecx
407c08:	39 0e                	cmp    %ecx,(%esi)
407c0a:	73 0d                	jae    0x407c19
407c0c:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
407c10:	75 62                	jne    0x407c74
407c12:	3b 46 18             	cmp    0x18(%esi),%eax
407c15:	7f 5d                	jg     0x407c74
407c17:	89 0e                	mov    %ecx,(%esi)
407c19:	8d 48 ff             	lea    -0x1(%eax),%ecx
407c1c:	85 c9                	test   %ecx,%ecx
407c1e:	7c 10                	jl     0x407c30
407c20:	ff 0e                	decl   (%esi)
407c22:	49                   	dec    %ecx
407c23:	8a 5c 0d f5          	mov    -0xb(%ebp,%ecx,1),%bl
407c27:	8b 06                	mov    (%esi),%eax
407c29:	88 18                	mov    %bl,(%eax)
407c2b:	79 f3                	jns    0x407c20
407c2d:	8b 45 f0             	mov    -0x10(%ebp),%eax
407c30:	01 46 04             	add    %eax,0x4(%esi)
407c33:	8b 46 0c             	mov    0xc(%esi),%eax
407c36:	83 e0 ef             	and    $0xffffffef,%eax
407c39:	83 c8 01             	or     $0x1,%eax
407c3c:	89 46 0c             	mov    %eax,0xc(%esi)
407c3f:	66 8b c2             	mov    %dx,%ax
407c42:	eb 34                	jmp    0x407c78
407c44:	8b 7d 08             	mov    0x8(%ebp),%edi
407c47:	8b 46 08             	mov    0x8(%esi),%eax
407c4a:	83 c0 02             	add    $0x2,%eax
407c4d:	39 06                	cmp    %eax,(%esi)
407c4f:	73 0e                	jae    0x407c5f
407c51:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
407c55:	75 1d                	jne    0x407c74
407c57:	83 7e 18 02          	cmpl   $0x2,0x18(%esi)
407c5b:	72 17                	jb     0x407c74
407c5d:	89 06                	mov    %eax,(%esi)
407c5f:	83 06 fe             	addl   $0xfffffffe,(%esi)
407c62:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
407c66:	8b 06                	mov    (%esi),%eax
407c68:	74 1d                	je     0x407c87
407c6a:	66 39 38             	cmp    %di,(%eax)
407c6d:	74 1b                	je     0x407c8a
407c6f:	83 c0 02             	add    $0x2,%eax
407c72:	89 06                	mov    %eax,(%esi)
407c74:	66 0d ff ff          	or     $0xffff,%ax
407c78:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407c7b:	5f                   	pop    %edi
407c7c:	5e                   	pop    %esi
407c7d:	33 cd                	xor    %ebp,%ecx
407c7f:	5b                   	pop    %ebx
407c80:	e8 b0 e2 ff ff       	call   0x405f35
407c85:	c9                   	leave
407c86:	c3                   	ret
407c87:	66 89 38             	mov    %di,(%eax)
407c8a:	8b 46 0c             	mov    0xc(%esi),%eax
407c8d:	83 46 04 02          	addl   $0x2,0x4(%esi)
407c91:	83 e0 ef             	and    $0xffffffef,%eax
407c94:	83 c8 01             	or     $0x1,%eax
407c97:	89 46 0c             	mov    %eax,0xc(%esi)
407c9a:	66 8b c7             	mov    %di,%ax
407c9d:	eb d9                	jmp    0x407c78
407c9f:	6a 0c                	push   $0xc
407ca1:	68 10 aa 41 00       	push   $0x41aa10
407ca6:	e8 9d 59 00 00       	call   0x40d648
407cab:	33 c0                	xor    %eax,%eax
407cad:	33 f6                	xor    %esi,%esi
407caf:	39 75 0c             	cmp    %esi,0xc(%ebp)
407cb2:	0f 95 c0             	setne  %al
407cb5:	3b c6                	cmp    %esi,%eax
407cb7:	75 1e                	jne    0x407cd7
407cb9:	e8 3c 17 00 00       	call   0x4093fa
407cbe:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407cc4:	56                   	push   %esi
407cc5:	56                   	push   %esi
407cc6:	56                   	push   %esi
407cc7:	56                   	push   %esi
407cc8:	56                   	push   %esi
407cc9:	e8 82 f9 ff ff       	call   0x407650
407cce:	83 c4 14             	add    $0x14,%esp
407cd1:	66 0d ff ff          	or     $0xffff,%ax
407cd5:	eb 2f                	jmp    0x407d06
407cd7:	ff 75 0c             	push   0xc(%ebp)
407cda:	e8 26 0c 00 00       	call   0x408905
407cdf:	59                   	pop    %ecx
407ce0:	89 75 fc             	mov    %esi,-0x4(%ebp)
407ce3:	ff 75 0c             	push   0xc(%ebp)
407ce6:	ff 75 08             	push   0x8(%ebp)
407ce9:	e8 06 fe ff ff       	call   0x407af4
407cee:	59                   	pop    %ecx