40687b:	83 c4 10             	add    $0x10,%esp
40687e:	84 c0                	test   %al,%al
406880:	74 33                	je     0x4068b5
406882:	8b 45 fc             	mov    -0x4(%ebp),%eax
406885:	6a ff                	push   $0xffffffff
406887:	57                   	push   %edi
406888:	57                   	push   %edi
406889:	57                   	push   %edi
40688a:	53                   	push   %ebx
40688b:	48                   	dec    %eax
40688c:	53                   	push   %ebx
40688d:	68 bc 07 00 00       	push   $0x7bc
406892:	89 46 10             	mov    %eax,0x10(%esi)
406895:	89 06                	mov    %eax,(%esi)
406897:	e8 a7 60 00 00       	call   0x40c943
40689c:	8b c8                	mov    %eax,%ecx
40689e:	89 46 28             	mov    %eax,0x28(%esi)
4068a1:	83 c4 1c             	add    $0x1c,%esp
4068a4:	89 56 2c             	mov    %edx,0x2c(%esi)
4068a7:	89 4e 20             	mov    %ecx,0x20(%esi)
4068aa:	8a c3                	mov    %bl,%al
4068ac:	89 56 24             	mov    %edx,0x24(%esi)
4068af:	89 4e 30             	mov    %ecx,0x30(%esi)
4068b2:	89 56 34             	mov    %edx,0x34(%esi)
4068b5:	5f                   	pop    %edi
4068b6:	5e                   	pop    %esi
4068b7:	5b                   	pop    %ebx
4068b8:	8b e5                	mov    %ebp,%esp
4068ba:	5d                   	pop    %ebp
4068bb:	c3                   	ret
4068bc:	8b ff                	mov    %edi,%edi
4068be:	55                   	push   %ebp
4068bf:	8b ec                	mov    %esp,%ebp
4068c1:	83 ec 50             	sub    $0x50,%esp
4068c4:	a1 0c 30 42 00       	mov    0x42300c,%eax
4068c9:	33 c5                	xor    %ebp,%eax
4068cb:	89 45 fc             	mov    %eax,-0x4(%ebp)
4068ce:	8b 45 08             	mov    0x8(%ebp),%eax
4068d1:	53                   	push   %ebx
4068d2:	56                   	push   %esi
4068d3:	8b 75 14             	mov    0x14(%ebp),%esi
4068d6:	57                   	push   %edi
4068d7:	8b 7d 10             	mov    0x10(%ebp),%edi
4068da:	57                   	push   %edi
4068db:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4068de:	89 7d b8             	mov    %edi,-0x48(%ebp)
4068e1:	ff 15 14 b1 41 00    	call   *0x41b114
4068e7:	8b c8                	mov    %eax,%ecx
4068e9:	33 c0                	xor    %eax,%eax
4068eb:	81 e1 ff 7f ff ff    	and    $0xffff7fff,%ecx
4068f1:	40                   	inc    %eax
4068f2:	3b c8                	cmp    %eax,%ecx
4068f4:	0f 85 f5 00 00 00    	jne    0x4069ef
4068fa:	66 89 46 08          	mov    %ax,0x8(%esi)
4068fe:	33 db                	xor    %ebx,%ebx
406900:	8b 45 b4             	mov    -0x4c(%ebp),%eax
406903:	85 c0                	test   %eax,%eax
406905:	74 20                	je     0x406927
406907:	8d 4d b0             	lea    -0x50(%ebp),%ecx
40690a:	89 5d b0             	mov    %ebx,-0x50(%ebp)
40690d:	51                   	push   %ecx
40690e:	50                   	push   %eax
40690f:	e8 52 03 00 00       	call   0x406c66
406914:	59                   	pop    %ecx
406915:	59                   	pop    %ecx
406916:	84 c0                	test   %al,%al
406918:	0f 84 ea 00 00 00    	je     0x406a08
40691e:	8b 45 b0             	mov    -0x50(%ebp),%eax
406921:	48                   	dec    %eax
406922:	89 46 10             	mov    %eax,0x10(%esi)
406925:	89 06                	mov    %eax,(%esi)
406927:	6a 0a                	push   $0xa
406929:	59                   	pop    %ecx
40692a:	33 c0                	xor    %eax,%eax
40692c:	8d 7d d4             	lea    -0x2c(%ebp),%edi
40692f:	6a 28                	push   $0x28
406931:	f3 ab                	rep stos %eax,%es:(%edi)
406933:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406936:	50                   	push   %eax
406937:	53                   	push   %ebx
406938:	ff 75 b8             	push   -0x48(%ebp)
40693b:	e8 4f 56 00 00       	call   0x40bf8f
406940:	85 c0                	test   %eax,%eax
406942:	0f 84 c4 00 00 00    	je     0x406a0c
406948:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40694b:	50                   	push   %eax
40694c:	ff 75 f4             	push   -0xc(%ebp)
40694f:	e8 ac 02 00 00       	call   0x406c00
406954:	53                   	push   %ebx
406955:	53                   	push   %ebx
406956:	ff 75 e8             	push   -0x18(%ebp)
406959:	66 89 46 06          	mov    %ax,0x6(%esi)
40695d:	ff 75 e4             	push   -0x1c(%ebp)
406960:	e8 13 01 00 00       	call   0x406a78
406965:	89 46 28             	mov    %eax,0x28(%esi)
406968:	83 c4 18             	add    $0x18,%esp
40696b:	23 c2                	and    %edx,%eax
40696d:	89 56 2c             	mov    %edx,0x2c(%esi)
406970:	83 f8 ff             	cmp    $0xffffffff,%eax
406973:	0f 84 8f 00 00 00    	je     0x406a08
406979:	52                   	push   %edx
40697a:	ff 76 28             	push   0x28(%esi)
40697d:	ff 75 e0             	push   -0x20(%ebp)
406980:	ff 75 dc             	push   -0x24(%ebp)
406983:	e8 f0 00 00 00       	call   0x406a78
406988:	89 46 20             	mov    %eax,0x20(%esi)
40698b:	83 c4 10             	add    $0x10,%esp
40698e:	23 c2                	and    %edx,%eax
406990:	89 56 24             	mov    %edx,0x24(%esi)
406993:	83 f8 ff             	cmp    $0xffffffff,%eax
406996:	74 70                	je     0x406a08
406998:	ff 76 2c             	push   0x2c(%esi)
40699b:	ff 76 28             	push   0x28(%esi)
40699e:	ff 75 d8             	push   -0x28(%ebp)
4069a1:	ff 75 d4             	push   -0x2c(%ebp)
4069a4:	e8 cf 00 00 00       	call   0x406a78
4069a9:	89 46 30             	mov    %eax,0x30(%esi)
4069ac:	83 c4 10             	add    $0x10,%esp
4069af:	23 c2                	and    %edx,%eax
4069b1:	89 56 34             	mov    %edx,0x34(%esi)
4069b4:	83 f8 ff             	cmp    $0xffffffff,%eax
4069b7:	74 4f                	je     0x406a08
4069b9:	6a 06                	push   $0x6
4069bb:	59                   	pop    %ecx
4069bc:	33 c0                	xor    %eax,%eax
4069be:	8d 7d bc             	lea    -0x44(%ebp),%edi
4069c1:	f3 ab                	rep stos %eax,%es:(%edi)
4069c3:	6a 18                	push   $0x18
4069c5:	8d 45 bc             	lea    -0x44(%ebp),%eax
4069c8:	50                   	push   %eax
4069c9:	33 c0                	xor    %eax,%eax
4069cb:	40                   	inc    %eax
4069cc:	50                   	push   %eax
4069cd:	ff 75 b8             	push   -0x48(%ebp)
4069d0:	e8 ba 55 00 00       	call   0x40bf8f
4069d5:	85 c0                	test   %eax,%eax
4069d7:	74 33                	je     0x406a0c
4069d9:	8d 46 18             	lea    0x18(%esi),%eax
4069dc:	50                   	push   %eax
4069dd:	8d 45 c4             	lea    -0x3c(%ebp),%eax
4069e0:	50                   	push   %eax
4069e1:	e8 da 01 00 00       	call   0x406bc0
4069e6:	84 c0                	test   %al,%al
4069e8:	59                   	pop    %ecx
4069e9:	59                   	pop    %ecx
4069ea:	0f 95 c0             	setne  %al
4069ed:	eb 78                	jmp    0x406a67
4069ef:	83 f9 02             	cmp    $0x2,%ecx
4069f2:	74 27                	je     0x406a1b
4069f4:	83 f9 03             	cmp    $0x3,%ecx
4069f7:	74 22                	je     0x406a1b
4069f9:	85 c9                	test   %ecx,%ecx
4069fb:	75 0f                	jne    0x406a0c
4069fd:	e8 05 13 00 00       	call   0x407d07
406a02:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
406a08:	32 c0                	xor    %al,%al
406a0a:	eb 5b                	jmp    0x406a67
406a0c:	ff 15 48 b0 41 00    	call   *0x41b048
406a12:	50                   	push   %eax
406a13:	e8 b9 12 00 00       	call   0x407cd1
406a18:	59                   	pop    %ecx
406a19:	eb ed                	jmp    0x406a08
406a1b:	33 c0                	xor    %eax,%eax
406a1d:	ba 00 10 00 00       	mov    $0x1000,%edx
406a22:	83 f9 02             	cmp    $0x2,%ecx
406a25:	0f 95 c0             	setne  %al
406a28:	48                   	dec    %eax
406a29:	23 c2                	and    %edx,%eax
406a2b:	03 c2                	add    %edx,%eax
406a2d:	66 89 46 06          	mov    %ax,0x6(%esi)
406a31:	33 c0                	xor    %eax,%eax
406a33:	40                   	inc    %eax
406a34:	66 89 46 08          	mov    %ax,0x8(%esi)
406a38:	8b 45 0c             	mov    0xc(%ebp),%eax
406a3b:	89 46 10             	mov    %eax,0x10(%esi)
406a3e:	89 06                	mov    %eax,(%esi)
406a40:	83 f9 02             	cmp    $0x2,%ecx
406a43:	74 1f                	je     0x406a64
406a45:	33 db                	xor    %ebx,%ebx
406a47:	8d 45 b8             	lea    -0x48(%ebp),%eax
406a4a:	53                   	push   %ebx
406a4b:	50                   	push   %eax
406a4c:	53                   	push   %ebx
406a4d:	53                   	push   %ebx
406a4e:	53                   	push   %ebx
406a4f:	57                   	push   %edi
406a50:	ff 15 18 b1 41 00    	call   *0x41b118
406a56:	85 c0                	test   %eax,%eax
406a58:	74 0a                	je     0x406a64
406a5a:	8b 45 b8             	mov    -0x48(%ebp),%eax
406a5d:	99                   	cltd
406a5e:	89 46 18             	mov    %eax,0x18(%esi)
406a61:	89 56 1c             	mov    %edx,0x1c(%esi)
406a64:	33 c0                	xor    %eax,%eax
406a66:	40                   	inc    %eax
406a67:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406a6a:	5f                   	pop    %edi
406a6b:	5e                   	pop    %esi
406a6c:	33 cd                	xor    %ebp,%ecx
406a6e:	5b                   	pop    %ebx
406a6f:	e8 e2 c4 ff ff       	call   0x402f56
406a74:	8b e5                	mov    %ebp,%esp
406a76:	5d                   	pop    %ebp
406a77:	c3                   	ret
406a78:	8b ff                	mov    %edi,%edi
406a7a:	55                   	push   %ebp
406a7b:	8b ec                	mov    %esp,%ebp
406a7d:	83 ec 28             	sub    $0x28,%esp
406a80:	a1 0c 30 42 00       	mov    0x42300c,%eax
406a85:	33 c5                	xor    %ebp,%eax
406a87:	89 45 fc             	mov    %eax,-0x4(%ebp)
406a8a:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406a8e:	75 0e                	jne    0x406a9e
406a90:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406a94:	75 08                	jne    0x406a9e
406a96:	8b 45 10             	mov    0x10(%ebp),%eax
406a99:	8b 55 14             	mov    0x14(%ebp),%edx
406a9c:	eb 76                	jmp    0x406b14
406a9e:	8d 45 dc             	lea    -0x24(%ebp),%eax
406aa1:	50                   	push   %eax
406aa2:	8d 45 08             	lea    0x8(%ebp),%eax
406aa5:	50                   	push   %eax
406aa6:	ff 15 20 b1 41 00    	call   *0x41b120
406aac:	85 c0                	test   %eax,%eax
406aae:	74 52                	je     0x406b02
406ab0:	8d 45 ec             	lea    -0x14(%ebp),%eax
406ab3:	50                   	push   %eax
406ab4:	8d 45 dc             	lea    -0x24(%ebp),%eax
406ab7:	50                   	push   %eax
406ab8:	6a 00                	push   $0x0
406aba:	ff 15 1c b1 41 00    	call   *0x41b11c
406ac0:	85 c0                	test   %eax,%eax
406ac2:	74 3e                	je     0x406b02
406ac4:	83 4d d8 ff          	orl    $0xffffffff,-0x28(%ebp)
406ac8:	8d 45 d8             	lea    -0x28(%ebp),%eax
406acb:	50                   	push   %eax
406acc:	8d 45 f8             	lea    -0x8(%ebp),%eax
406acf:	50                   	push   %eax
406ad0:	8d 45 f6             	lea    -0xa(%ebp),%eax
406ad3:	50                   	push   %eax
406ad4:	8d 45 f4             	lea    -0xc(%ebp),%eax
406ad7:	50                   	push   %eax
406ad8:	8d 45 f2             	lea    -0xe(%ebp),%eax
406adb:	50                   	push   %eax
406adc:	8d 45 ee             	lea    -0x12(%ebp),%eax
406adf:	50                   	push   %eax
406ae0:	8d 45 ec             	lea    -0x14(%ebp),%eax
406ae3:	50                   	push   %eax
406ae4:	e8 39 00 00 00       	call   0x406b22
406ae9:	8b c8                	mov    %eax,%ecx
406aeb:	83 c4 1c             	add    $0x1c,%esp
406aee:	23 ca                	and    %edx,%ecx
406af0:	83 f9 ff             	cmp    $0xffffffff,%ecx
406af3:	75 1f                	jne    0x406b14
406af5:	e8 0d 12 00 00       	call   0x407d07
406afa:	c7 00 84 00 00 00    	movl   $0x84,(%eax)
406b00:	eb 0d                	jmp    0x406b0f
406b02:	ff 15 48 b0 41 00    	call   *0x41b048
406b08:	50                   	push   %eax
406b09:	e8 c3 11 00 00       	call   0x407cd1
406b0e:	59                   	pop    %ecx
406b0f:	83 c8 ff             	or     $0xffffffff,%eax
406b12:	0b d0                	or     %eax,%edx
406b14:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406b17:	33 cd                	xor    %ebp,%ecx
406b19:	e8 38 c4 ff ff       	call   0x402f56
406b1e:	8b e5                	mov    %ebp,%esp
406b20:	5d                   	pop    %ebp
406b21:	c3                   	ret
406b22:	8b ff                	mov    %edi,%edi
406b24:	55                   	push   %ebp
406b25:	8b ec                	mov    %esp,%ebp
406b27:	8b 45 20             	mov    0x20(%ebp),%eax
406b2a:	ff 30                	push   (%eax)
406b2c:	8b 45 1c             	mov    0x1c(%ebp),%eax
406b2f:	0f b7 00             	movzwl (%eax),%eax
406b32:	50                   	push   %eax
406b33:	8b 45 18             	mov    0x18(%ebp),%eax
406b36:	0f b7 00             	movzwl (%eax),%eax
406b39:	50                   	push   %eax
406b3a:	8b 45 14             	mov    0x14(%ebp),%eax
406b3d:	0f b7 00             	movzwl (%eax),%eax
406b40:	50                   	push   %eax
406b41:	8b 45 10             	mov    0x10(%ebp),%eax
406b44:	0f b7 00             	movzwl (%eax),%eax
406b47:	50                   	push   %eax
406b48:	8b 45 0c             	mov    0xc(%ebp),%eax
406b4b:	0f b7 00             	movzwl (%eax),%eax
406b4e:	50                   	push   %eax
406b4f:	8b 45 08             	mov    0x8(%ebp),%eax
406b52:	0f b7 00             	movzwl (%eax),%eax
406b55:	50                   	push   %eax
406b56:	e8 e8 5d 00 00       	call   0x40c943
406b5b:	83 c4 1c             	add    $0x1c,%esp
406b5e:	5d                   	pop    %ebp
406b5f:	c3                   	ret
406b60:	8b ff                	mov    %edi,%edi
406b62:	55                   	push   %ebp
406b63:	8b ec                	mov    %esp,%ebp
406b65:	56                   	push   %esi
406b66:	57                   	push   %edi
406b67:	e8 9b 11 00 00       	call   0x407d07
406b6c:	8b 38                	mov    (%eax),%edi
406b6e:	e8 94 11 00 00       	call   0x407d07
406b73:	ff 75 10             	push   0x10(%ebp)
406b76:	ff 75 0c             	push   0xc(%ebp)
406b79:	83 20 00             	andl   $0x0,(%eax)
406b7c:	ff 75 08             	push   0x8(%ebp)
406b7f:	e8 70 50 00 00       	call   0x40bbf4
406b84:	83 c4 0c             	add    $0xc,%esp
406b87:	8b f0                	mov    %eax,%esi
406b89:	e8 79 11 00 00       	call   0x407d07
406b8e:	85 f6                	test   %esi,%esi
406b90:	74 06                	je     0x406b98
406b92:	89 38                	mov    %edi,(%eax)
406b94:	8b c6                	mov    %esi,%eax
406b96:	eb 24                	jmp    0x406bbc
406b98:	83 38 22             	cmpl   $0x22,(%eax)
406b9b:	74 04                	je     0x406ba1
406b9d:	33 c0                	xor    %eax,%eax
406b9f:	eb 1b                	jmp    0x406bbc
406ba1:	e8 61 11 00 00       	call   0x407d07
406ba6:	6a 00                	push   $0x0
406ba8:	ff 75 0c             	push   0xc(%ebp)
406bab:	6a 00                	push   $0x0
406bad:	89 38                	mov    %edi,(%eax)
406baf:	e8 40 50 00 00       	call   0x40bbf4
406bb4:	8b 4d 14             	mov    0x14(%ebp),%ecx
406bb7:	83 c4 0c             	add    $0xc,%esp
406bba:	89 01                	mov    %eax,(%ecx)
406bbc:	5f                   	pop    %edi
406bbd:	5e                   	pop    %esi
406bbe:	5d                   	pop    %ebp
406bbf:	c3                   	ret
406bc0:	8b ff                	mov    %edi,%edi
406bc2:	55                   	push   %ebp
406bc3:	8b ec                	mov    %esp,%ebp
406bc5:	56                   	push   %esi
406bc6:	8b 75 0c             	mov    0xc(%ebp),%esi
406bc9:	57                   	push   %edi
406bca:	8b 7d 08             	mov    0x8(%ebp),%edi
406bcd:	83 26 00             	andl   $0x0,(%esi)
406bd0:	83 66 04 00          	andl   $0x0,0x4(%esi)
406bd4:	8b 47 04             	mov    0x4(%edi),%eax
406bd7:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
406bdc:	7e 0f                	jle    0x406bed
406bde:	e8 24 11 00 00       	call   0x407d07
406be3:	c7 00 84 00 00 00    	movl   $0x84,(%eax)
406be9:	32 c0                	xor    %al,%al
406beb:	eb 0f                	jmp    0x406bfc