406a01:	53                   	push   %ebx
406a02:	c7 45 dc 02 00 00 00 	movl   $0x2,-0x24(%ebp)
406a09:	ff 75 08             	push   0x8(%ebp)
406a0c:	ff d6                	call   *%esi
406a0e:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a11:	f6 45 ff 08          	testb  $0x8,-0x1(%ebp)
406a15:	74 43                	je     0x406a5a
406a17:	8b 4f 18             	mov    0x18(%edi),%ecx
406a1a:	68 04 01 00 00       	push   $0x104
406a1f:	8b 04 81             	mov    (%ecx,%eax,4),%eax
406a22:	8b 80 10 02 00 00    	mov    0x210(%eax),%eax
406a28:	c1 e8 0a             	shr    $0xa,%eax
406a2b:	50                   	push   %eax
406a2c:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406a32:	50                   	push   %eax
406a33:	e8 8e 1e 00 00       	call   0x4088c6
406a38:	8d 85 a4 fe ff ff    	lea    -0x15c(%ebp),%eax
406a3e:	83 c4 0c             	add    $0xc,%esp
406a41:	89 45 e8             	mov    %eax,-0x18(%ebp)
406a44:	8d 45 d4             	lea    -0x2c(%ebp),%eax
406a47:	50                   	push   %eax
406a48:	6a 00                	push   $0x0
406a4a:	53                   	push   %ebx
406a4b:	c7 45 dc 04 00 00 00 	movl   $0x4,-0x24(%ebp)
406a52:	ff 75 08             	push   0x8(%ebp)
406a55:	ff d6                	call   *%esi
406a57:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a5a:	40                   	inc    %eax
406a5b:	3b 47 1c             	cmp    0x1c(%edi),%eax
406a5e:	89 45 d8             	mov    %eax,-0x28(%ebp)
406a61:	0f 82 68 fd ff ff    	jb     0x4067cf
406a67:	33 db                	xor    %ebx,%ebx
406a69:	3b 47 20             	cmp    0x20(%edi),%eax
406a6c:	53                   	push   %ebx
406a6d:	7f 14                	jg     0x406a83
406a6f:	50                   	push   %eax
406a70:	68 08 10 00 00       	push   $0x1008
406a75:	ff 75 08             	push   0x8(%ebp)
406a78:	ff d6                	call   *%esi
406a7a:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a7d:	40                   	inc    %eax
406a7e:	89 45 d8             	mov    %eax,-0x28(%ebp)
406a81:	eb e6                	jmp    0x406a69
406a83:	6a 01                	push   $0x1
406a85:	6a 0b                	push   $0xb
406a87:	ff 75 08             	push   0x8(%ebp)
406a8a:	ff d6                	call   *%esi
406a8c:	8b 45 d8             	mov    -0x28(%ebp),%eax
406a8f:	5f                   	pop    %edi
406a90:	5e                   	pop    %esi
406a91:	5b                   	pop    %ebx
406a92:	c9                   	leave
406a93:	c2 04 00             	ret    $0x4
406a96:	56                   	push   %esi
406a97:	8b f1                	mov    %ecx,%esi
406a99:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
406a9d:	74 05                	je     0x406aa4
406a9f:	6a fc                	push   $0xfffffffc
406aa1:	58                   	pop    %eax
406aa2:	eb 33                	jmp    0x406ad7
406aa4:	8b 44 24 0c          	mov    0xc(%esp),%eax
406aa8:	c6 46 05 01          	movb   $0x1,0x5(%esi)
406aac:	85 c0                	test   %eax,%eax
406aae:	7c 20                	jl     0x406ad0
406ab0:	3b 46 1c             	cmp    0x1c(%esi),%eax
406ab3:	73 1b                	jae    0x406ad0
406ab5:	8b 4e 18             	mov    0x18(%esi),%ecx
406ab8:	68 50 02 00 00       	push   $0x250
406abd:	ff 34 81             	push   (%ecx,%eax,4)
406ac0:	ff 74 24 10          	push   0x10(%esp)
406ac4:	e8 8b 25 00 00       	call   0x409054
406ac9:	83 c4 0c             	add    $0xc,%esp
406acc:	6a 01                	push   $0x1
406ace:	eb 02                	jmp    0x406ad2
406ad0:	6a fe                	push   $0xfffffffe
406ad2:	80 66 05 00          	andb   $0x0,0x5(%esi)
406ad6:	58                   	pop    %eax
406ad7:	5e                   	pop    %esi
406ad8:	c2 08 00             	ret    $0x8
406adb:	56                   	push   %esi
406adc:	8b f1                	mov    %ecx,%esi
406ade:	33 c9                	xor    %ecx,%ecx
406ae0:	38 4e 04             	cmp    %cl,0x4(%esi)
406ae3:	74 05                	je     0x406aea
406ae5:	6a fc                	push   $0xfffffffc
406ae7:	58                   	pop    %eax
406ae8:	eb 2d                	jmp    0x406b17
406aea:	8b 56 1c             	mov    0x1c(%esi),%edx
406aed:	53                   	push   %ebx
406aee:	3b d1                	cmp    %ecx,%edx
406af0:	57                   	push   %edi
406af1:	c6 46 05 01          	movb   $0x1,0x5(%esi)
406af5:	7e 17                	jle    0x406b0e
406af7:	8b 46 18             	mov    0x18(%esi),%eax
406afa:	8b f8                	mov    %eax,%edi
406afc:	8b 1f                	mov    (%edi),%ebx
406afe:	8b 1b                	mov    (%ebx),%ebx
406b00:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
406b04:	74 15                	je     0x406b1b
406b06:	41                   	inc    %ecx
406b07:	83 c7 04             	add    $0x4,%edi
406b0a:	3b ca                	cmp    %edx,%ecx
406b0c:	7c ee                	jl     0x406afc
406b0e:	6a fe                	push   $0xfffffffe
406b10:	80 66 05 00          	andb   $0x0,0x5(%esi)
406b14:	58                   	pop    %eax
406b15:	5f                   	pop    %edi
406b16:	5b                   	pop    %ebx
406b17:	5e                   	pop    %esi
406b18:	c2 08 00             	ret    $0x8
406b1b:	68 50 02 00 00       	push   $0x250
406b20:	ff 34 88             	push   (%eax,%ecx,4)
406b23:	ff 74 24 18          	push   0x18(%esp)
406b27:	e8 28 25 00 00       	call   0x409054
406b2c:	83 c4 0c             	add    $0xc,%esp
406b2f:	6a 01                	push   $0x1
406b31:	eb dd                	jmp    0x406b10
406b33:	55                   	push   %ebp
406b34:	8b ec                	mov    %esp,%ebp
406b36:	51                   	push   %ecx
406b37:	56                   	push   %esi
406b38:	6a 40                	push   $0x40
406b3a:	68 00 10 00 00       	push   $0x1000
406b3f:	ff 75 10             	push   0x10(%ebp)
406b42:	6a 00                	push   $0x0
406b44:	ff 75 08             	push   0x8(%ebp)
406b47:	ff 15 a4 a0 40 00    	call   *0x40a0a4
406b4d:	8b f0                	mov    %eax,%esi
406b4f:	85 f6                	test   %esi,%esi
406b51:	74 1a                	je     0x406b6d
406b53:	8d 45 fc             	lea    -0x4(%ebp),%eax
406b56:	50                   	push   %eax
406b57:	ff 75 10             	push   0x10(%ebp)
406b5a:	ff 75 0c             	push   0xc(%ebp)
406b5d:	56                   	push   %esi
406b5e:	ff 75 08             	push   0x8(%ebp)
406b61:	ff 15 a0 a0 40 00    	call   *0x40a0a0
406b67:	f7 d8                	neg    %eax
406b69:	1b c0                	sbb    %eax,%eax
406b6b:	23 c6                	and    %esi,%eax
406b6d:	5e                   	pop    %esi
406b6e:	c9                   	leave
406b6f:	c3                   	ret
406b70:	55                   	push   %ebp
406b71:	8b ec                	mov    %esp,%ebp
406b73:	51                   	push   %ecx
406b74:	51                   	push   %ecx
406b75:	53                   	push   %ebx
406b76:	56                   	push   %esi
406b77:	57                   	push   %edi
406b78:	8b 7d 08             	mov    0x8(%ebp),%edi
406b7b:	ff 75 10             	push   0x10(%ebp)
406b7e:	ff 75 0c             	push   0xc(%ebp)
406b81:	57                   	push   %edi
406b82:	e8 ac ff ff ff       	call   0x406b33
406b87:	8b f0                	mov    %eax,%esi
406b89:	33 db                	xor    %ebx,%ebx
406b8b:	83 c4 0c             	add    $0xc,%esp
406b8e:	3b f3                	cmp    %ebx,%esi
406b90:	89 75 10             	mov    %esi,0x10(%ebp)
406b93:	74 5c                	je     0x406bf1
406b95:	ff 75 18             	push   0x18(%ebp)
406b98:	ff 75 14             	push   0x14(%ebp)
406b9b:	57                   	push   %edi
406b9c:	e8 92 ff ff ff       	call   0x406b33
406ba1:	83 c4 0c             	add    $0xc,%esp
406ba4:	3b c3                	cmp    %ebx,%eax
406ba6:	89 45 0c             	mov    %eax,0xc(%ebp)
406ba9:	75 10                	jne    0x406bbb
406bab:	68 00 80 00 00       	push   $0x8000
406bb0:	53                   	push   %ebx
406bb1:	56                   	push   %esi
406bb2:	57                   	push   %edi
406bb3:	ff 15 a8 a0 40 00    	call   *0x40a0a8
406bb9:	eb 36                	jmp    0x406bf1
406bbb:	8d 4d f8             	lea    -0x8(%ebp),%ecx
406bbe:	51                   	push   %ecx
406bbf:	53                   	push   %ebx
406bc0:	50                   	push   %eax
406bc1:	56                   	push   %esi
406bc2:	53                   	push   %ebx
406bc3:	53                   	push   %ebx
406bc4:	57                   	push   %edi
406bc5:	ff 15 68 a0 40 00    	call   *0x40a068
406bcb:	8b f0                	mov    %eax,%esi
406bcd:	3b f3                	cmp    %ebx,%esi
406bcf:	89 75 18             	mov    %esi,0x18(%ebp)
406bd2:	75 22                	jne    0x406bf6
406bd4:	be 00 80 00 00       	mov    $0x8000,%esi
406bd9:	56                   	push   %esi
406bda:	53                   	push   %ebx
406bdb:	ff 75 10             	push   0x10(%ebp)
406bde:	57                   	push   %edi
406bdf:	8b 3d a8 a0 40 00    	mov    0x40a0a8,%edi
406be5:	ff d7                	call   *%edi
406be7:	56                   	push   %esi
406be8:	53                   	push   %ebx
406be9:	ff 75 0c             	push   0xc(%ebp)
406bec:	ff 75 08             	push   0x8(%ebp)
406bef:	ff d7                	call   *%edi
406bf1:	83 c8 ff             	or     $0xffffffff,%eax
406bf4:	eb 40                	jmp    0x406c36
406bf6:	68 d0 07 00 00       	push   $0x7d0
406bfb:	56                   	push   %esi
406bfc:	ff 15 14 a1 40 00    	call   *0x40a114
406c02:	8d 45 fc             	lea    -0x4(%ebp),%eax
406c05:	50                   	push   %eax
406c06:	56                   	push   %esi
406c07:	ff 15 64 a0 40 00    	call   *0x40a064
406c0d:	be 00 80 00 00       	mov    $0x8000,%esi
406c12:	56                   	push   %esi
406c13:	53                   	push   %ebx
406c14:	ff 75 10             	push   0x10(%ebp)
406c17:	57                   	push   %edi
406c18:	8b 3d a8 a0 40 00    	mov    0x40a0a8,%edi
406c1e:	ff d7                	call   *%edi
406c20:	56                   	push   %esi
406c21:	53                   	push   %ebx
406c22:	ff 75 0c             	push   0xc(%ebp)
406c25:	ff 75 08             	push   0x8(%ebp)
406c28:	ff d7                	call   *%edi
406c2a:	ff 75 18             	push   0x18(%ebp)
406c2d:	ff 15 dc a0 40 00    	call   *0x40a0dc
406c33:	8b 45 fc             	mov    -0x4(%ebp),%eax
406c36:	5f                   	pop    %edi
406c37:	5e                   	pop    %esi
406c38:	5b                   	pop    %ebx
406c39:	c9                   	leave
406c3a:	c3                   	ret
406c3b:	56                   	push   %esi
406c3c:	8b 74 24 08          	mov    0x8(%esp),%esi
406c40:	57                   	push   %edi
406c41:	33 ff                	xor    %edi,%edi
406c43:	56                   	push   %esi
406c44:	ff 96 04 01 00 00    	call   *0x104(%esi)
406c4a:	85 c0                	test   %eax,%eax
406c4c:	74 11                	je     0x406c5f
406c4e:	50                   	push   %eax
406c4f:	ff 96 08 01 00 00    	call   *0x108(%esi)
406c55:	85 c0                	test   %eax,%eax
406c57:	75 06                	jne    0x406c5f
406c59:	47                   	inc    %edi
406c5a:	83 ff 14             	cmp    $0x14,%edi
406c5d:	7c e4                	jl     0x406c43
406c5f:	56                   	push   %esi
406c60:	ff 96 04 01 00 00    	call   *0x104(%esi)
406c66:	5f                   	pop    %edi
406c67:	5e                   	pop    %esi
406c68:	c2 04 00             	ret    $0x4
406c6b:	b8 b8 94 40 00       	mov    $0x4094b8,%eax
406c70:	e8 bb 22 00 00       	call   0x408f30
406c75:	83 ec 1c             	sub    $0x1c,%esp
406c78:	53                   	push   %ebx
406c79:	56                   	push   %esi
406c7a:	57                   	push   %edi
406c7b:	8b f9                	mov    %ecx,%edi
406c7d:	89 65 f0             	mov    %esp,-0x10(%ebp)
406c80:	57                   	push   %edi
406c81:	ff b7 f0 01 00 00    	push   0x1f0(%edi)
406c87:	33 f6                	xor    %esi,%esi
406c89:	89 75 fc             	mov    %esi,-0x4(%ebp)
406c8c:	ff 15 94 a2 40 00    	call   *0x40a294
406c92:	8d 45 dc             	lea    -0x24(%ebp),%eax
406c95:	50                   	push   %eax
406c96:	8d 45 ec             	lea    -0x14(%ebp),%eax
406c99:	50                   	push   %eax
406c9a:	56                   	push   %esi
406c9b:	68 3f 00 0f 00       	push   $0xf003f
406ca0:	56                   	push   %esi
406ca1:	56                   	push   %esi
406ca2:	56                   	push   %esi
406ca3:	68 38 a3 40 00       	push   $0x40a338
406ca8:	68 01 00 00 80       	push   $0x80000001
406cad:	ff 15 2c a0 40 00    	call   *0x40a02c
406cb3:	3b c6                	cmp    %esi,%eax
406cb5:	74 11                	je     0x406cc8
406cb7:	8d 45 e8             	lea    -0x18(%ebp),%eax
406cba:	68 d8 a5 40 00       	push   $0x40a5d8
406cbf:	50                   	push   %eax
406cc0:	89 75 e8             	mov    %esi,-0x18(%ebp)
406cc3:	e8 6e 22 00 00       	call   0x408f36
406cc8:	6a 28                	push   $0x28
406cca:	57                   	push   %edi
406ccb:	6a 03                	push   $0x3
406ccd:	56                   	push   %esi
406cce:	68 54 a3 40 00       	push   $0x40a354
406cd3:	ff 75 ec             	push   -0x14(%ebp)
406cd6:	ff 15 08 a0 40 00    	call   *0x40a008
406cdc:	ff 75 ec             	push   -0x14(%ebp)
406cdf:	8b f8                	mov    %eax,%edi
406ce1:	ff 15 00 a0 40 00    	call   *0x40a000
406ce7:	3b fe                	cmp    %esi,%edi
406ce9:	74 11                	je     0x406cfc
406ceb:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406cee:	68 d8 a5 40 00       	push   $0x40a5d8
406cf3:	50                   	push   %eax
406cf4:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406cf7:	e8 3a 22 00 00       	call   0x408f36
406cfc:	8d 45 e0             	lea    -0x20(%ebp),%eax
406cff:	68 d8 a5 40 00       	push   $0x40a5d8
406d04:	50                   	push   %eax
406d05:	c7 45 e0 01 00 00 00 	movl   $0x1,-0x20(%ebp)
406d0c:	e8 25 22 00 00       	call   0x408f36
406d11:	b8 17 6d 40 00       	mov    $0x406d17,%eax
406d16:	c3                   	ret
406d17:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406d1a:	8b 45 d8             	mov    -0x28(%ebp),%eax
406d1d:	5f                   	pop    %edi
406d1e:	5e                   	pop    %esi
406d1f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406d26:	5b                   	pop    %ebx
406d27:	c9                   	leave
406d28:	c3                   	ret
406d29:	b8 c4 94 40 00       	mov    $0x4094c4,%eax
406d2e:	e8 fd 21 00 00       	call   0x408f30
406d33:	83 ec 48             	sub    $0x48,%esp
406d36:	53                   	push   %ebx
406d37:	56                   	push   %esi
406d38:	57                   	push   %edi
406d39:	8d 45 ec             	lea    -0x14(%ebp),%eax
406d3c:	89 65 f0             	mov    %esp,-0x10(%ebp)
406d3f:	33 db                	xor    %ebx,%ebx
406d41:	50                   	push   %eax
406d42:	68 3f 00 0f 00       	push   $0xf003f
406d47:	53                   	push   %ebx
406d48:	8b f1                	mov    %ecx,%esi
406d4a:	68 38 a3 40 00       	push   $0x40a338
406d4f:	68 01 00 00 80       	push   $0x80000001
406d54:	89 75 c4             	mov    %esi,-0x3c(%ebp)
406d57:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406d5a:	ff 15 04 a0 40 00    	call   *0x40a004
406d60:	3b c3                	cmp    %ebx,%eax
406d62:	74 11                	je     0x406d75
406d64:	8d 45 e8             	lea    -0x18(%ebp),%eax
406d67:	68 d8 a5 40 00       	push   $0x40a5d8
406d6c:	50                   	push   %eax
406d6d:	89 5d e8             	mov    %ebx,-0x18(%ebp)
406d70:	e8 c1 21 00 00       	call   0x408f36
406d75:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406d78:	c7 45 e4 28 00 00 00 	movl   $0x28,-0x1c(%ebp)
406d7f:	50                   	push   %eax
406d80:	8d 45 c0             	lea    -0x40(%ebp),%eax
406d83:	56                   	push   %esi
406d84:	50                   	push   %eax
406d85:	53                   	push   %ebx
406d86:	68 54 a3 40 00       	push   $0x40a354
406d8b:	ff 75 ec             	push   -0x14(%ebp)
406d8e:	ff 15 30 a0 40 00    	call   *0x40a030
406d94:	ff 75 ec             	push   -0x14(%ebp)
406d97:	8b f8                	mov    %eax,%edi