40992a:	eb 3d                	jmp    0x409969
40992c:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
409930:	75 16                	jne    0x409948
409932:	83 f8 40             	cmp    $0x40,%eax
409935:	73 79                	jae    0x4099b0
409937:	80 fb 5f             	cmp    $0x5f,%bl
40993a:	74 74                	je     0x4099b0
40993c:	50                   	push   %eax
40993d:	8b 45 08             	mov    0x8(%ebp),%eax
409940:	56                   	push   %esi
409941:	6a 40                	push   $0x40
409943:	83 c0 40             	add    $0x40,%eax
409946:	eb 20                	jmp    0x409968
409948:	83 7d 0c 02          	cmpl   $0x2,0xc(%ebp)
40994c:	75 62                	jne    0x4099b0
40994e:	83 f8 10             	cmp    $0x10,%eax
409951:	73 5d                	jae    0x4099b0
409953:	84 db                	test   %bl,%bl
409955:	74 05                	je     0x40995c
409957:	80 fb 2c             	cmp    $0x2c,%bl
40995a:	75 54                	jne    0x4099b0
40995c:	50                   	push   %eax
40995d:	8b 45 08             	mov    0x8(%ebp),%eax
409960:	56                   	push   %esi
409961:	6a 10                	push   $0x10
409963:	05 80 00 00 00       	add    $0x80,%eax
409968:	50                   	push   %eax
409969:	e8 88 80 00 00       	call   0x4119f6
40996e:	83 c4 10             	add    $0x10,%esp
409971:	85 c0                	test   %eax,%eax
409973:	74 0f                	je     0x409984
409975:	33 c0                	xor    %eax,%eax
409977:	50                   	push   %eax
409978:	50                   	push   %eax
409979:	50                   	push   %eax
40997a:	50                   	push   %eax
40997b:	50                   	push   %eax
40997c:	e8 d3 db ff ff       	call   0x407554
409981:	83 c4 14             	add    $0x14,%esp
409984:	80 fb 2c             	cmp    $0x2c,%bl
409987:	0f 84 25 ff ff ff    	je     0x4098b2
40998d:	84 db                	test   %bl,%bl
40998f:	0f 84 1d ff ff ff    	je     0x4098b2
409995:	ff 45 0c             	incl   0xc(%ebp)
409998:	8d 77 01             	lea    0x1(%edi),%esi
40999b:	68 a0 7f 41 00       	push   $0x417fa0
4099a0:	56                   	push   %esi
4099a1:	e8 0a 80 00 00       	call   0x4119b0
4099a6:	85 c0                	test   %eax,%eax
4099a8:	59                   	pop    %ecx
4099a9:	59                   	pop    %ecx
4099aa:	0f 85 56 ff ff ff    	jne    0x409906
4099b0:	83 c8 ff             	or     $0xffffffff,%eax
4099b3:	5f                   	pop    %edi
4099b4:	5e                   	pop    %esi
4099b5:	5b                   	pop    %ebx
4099b6:	5d                   	pop    %ebp
4099b7:	c3                   	ret
4099b8:	55                   	push   %ebp
4099b9:	8b ec                	mov    %esp,%ebp
4099bb:	53                   	push   %ebx
4099bc:	56                   	push   %esi
4099bd:	8b 75 10             	mov    0x10(%ebp),%esi
4099c0:	56                   	push   %esi
4099c1:	ff 75 0c             	push   0xc(%ebp)
4099c4:	ff 75 08             	push   0x8(%ebp)
4099c7:	e8 cf 12 00 00       	call   0x40ac9b
4099cc:	83 c4 0c             	add    $0xc,%esp
4099cf:	33 db                	xor    %ebx,%ebx
4099d1:	85 c0                	test   %eax,%eax
4099d3:	74 0d                	je     0x4099e2
4099d5:	53                   	push   %ebx
4099d6:	53                   	push   %ebx
4099d7:	53                   	push   %ebx
4099d8:	53                   	push   %ebx
4099d9:	53                   	push   %ebx
4099da:	e8 75 db ff ff       	call   0x407554
4099df:	83 c4 14             	add    $0x14,%esp
4099e2:	8d 46 40             	lea    0x40(%esi),%eax
4099e5:	38 18                	cmp    %bl,(%eax)
4099e7:	74 16                	je     0x4099ff
4099e9:	50                   	push   %eax
4099ea:	68 a8 7f 41 00       	push   $0x417fa8
4099ef:	6a 02                	push   $0x2
4099f1:	ff 75 0c             	push   0xc(%ebp)
4099f4:	ff 75 08             	push   0x8(%ebp)
4099f7:	e8 55 fe ff ff       	call   0x409851
4099fc:	83 c4 14             	add    $0x14,%esp
4099ff:	8d 86 80 00 00 00    	lea    0x80(%esi),%eax
409a05:	38 18                	cmp    %bl,(%eax)
409a07:	5e                   	pop    %esi
409a08:	5b                   	pop    %ebx
409a09:	74 16                	je     0x409a21
409a0b:	50                   	push   %eax
409a0c:	68 a4 7f 41 00       	push   $0x417fa4
409a11:	6a 02                	push   $0x2
409a13:	ff 75 0c             	push   0xc(%ebp)
409a16:	ff 75 08             	push   0x8(%ebp)
409a19:	e8 33 fe ff ff       	call   0x409851
409a1e:	83 c4 14             	add    $0x14,%esp
409a21:	5d                   	pop    %ebp
409a22:	c3                   	ret
409a23:	83 ec 10             	sub    $0x10,%esp
409a26:	53                   	push   %ebx
409a27:	33 db                	xor    %ebx,%ebx
409a29:	43                   	inc    %ebx
409a2a:	68 55 03 00 00       	push   $0x355
409a2f:	89 5c 24 10          	mov    %ebx,0x10(%esp)
409a33:	e8 b4 f8 ff ff       	call   0x4092ec
409a38:	85 c0                	test   %eax,%eax
409a3a:	59                   	pop    %ecx
409a3b:	89 44 24 10          	mov    %eax,0x10(%esp)
409a3f:	0f 84 4a 01 00 00    	je     0x409b8f
409a45:	55                   	push   %ebp
409a46:	57                   	push   %edi
409a47:	8d 78 04             	lea    0x4(%eax),%edi
409a4a:	c6 07 00             	movb   $0x0,(%edi)
409a4d:	89 18                	mov    %ebx,(%eax)
409a4f:	8d 6e 10             	lea    0x10(%esi),%ebp
409a52:	89 5c 24 10          	mov    %ebx,0x10(%esp)
409a56:	8d 5d 48             	lea    0x48(%ebp),%ebx
409a59:	ff 33                	push   (%ebx)
409a5b:	68 b0 7f 41 00       	push   $0x417fb0
409a60:	ff 35 e4 7e 41 00    	push   0x417ee4
409a66:	6a 03                	push   $0x3
409a68:	68 51 03 00 00       	push   $0x351
409a6d:	57                   	push   %edi
409a6e:	e8 de fd ff ff       	call   0x409851
409a73:	83 c4 18             	add    $0x18,%esp
409a76:	c7 44 24 0c e4 7e 41 	movl   $0x417ee4,0xc(%esp)
409a7d:	00
409a7e:	68 ac 7f 41 00       	push   $0x417fac
409a83:	68 51 03 00 00       	push   $0x351
409a88:	57                   	push   %edi
409a89:	e8 aa 7e 00 00       	call   0x411938
409a8e:	83 c4 0c             	add    $0xc,%esp
409a91:	85 c0                	test   %eax,%eax
409a93:	74 0f                	je     0x409aa4
409a95:	33 c0                	xor    %eax,%eax
409a97:	50                   	push   %eax
409a98:	50                   	push   %eax
409a99:	50                   	push   %eax
409a9a:	50                   	push   %eax
409a9b:	50                   	push   %eax
409a9c:	e8 b3 da ff ff       	call   0x407554
409aa1:	83 c4 14             	add    $0x14,%esp
409aa4:	ff 75 58             	push   0x58(%ebp)
409aa7:	ff 33                	push   (%ebx)
409aa9:	e8 e2 13 00 00       	call   0x40ae90
409aae:	85 c0                	test   %eax,%eax
409ab0:	59                   	pop    %ecx
409ab1:	59                   	pop    %ecx
409ab2:	74 05                	je     0x409ab9
409ab4:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
409ab9:	ff 44 24 10          	incl   0x10(%esp)
409abd:	8b 44 24 10          	mov    0x10(%esp),%eax
409ac1:	83 44 24 0c 0c       	addl   $0xc,0xc(%esp)
409ac6:	c1 e0 04             	shl    $0x4,%eax
409ac9:	8d 2c 30             	lea    (%eax,%esi,1),%ebp
409acc:	8b 44 24 0c          	mov    0xc(%esp),%eax
409ad0:	8d 5d 48             	lea    0x48(%ebp),%ebx
409ad3:	ff 33                	push   (%ebx)
409ad5:	68 b0 7f 41 00       	push   $0x417fb0
409ada:	ff 30                	push   (%eax)
409adc:	6a 03                	push   $0x3
409ade:	68 51 03 00 00       	push   $0x351
409ae3:	57                   	push   %edi
409ae4:	e8 68 fd ff ff       	call   0x409851
409ae9:	83 c4 18             	add    $0x18,%esp
409aec:	81 7c 24 0c 14 7f 41 	cmpl   $0x417f14,0xc(%esp)
409af3:	00
409af4:	7c 88                	jl     0x409a7e
409af6:	33 ed                	xor    %ebp,%ebp
409af8:	39 6c 24 14          	cmp    %ebp,0x14(%esp)
409afc:	75 42                	jne    0x409b40
409afe:	8b 46 50             	mov    0x50(%esi),%eax
409b01:	3b c5                	cmp    %ebp,%eax
409b03:	8b 1d 98 70 41 00    	mov    0x417098,%ebx
409b09:	74 10                	je     0x409b1b
409b0b:	50                   	push   %eax
409b0c:	ff d3                	call   *%ebx
409b0e:	85 c0                	test   %eax,%eax
409b10:	75 09                	jne    0x409b1b
409b12:	ff 76 50             	push   0x50(%esi)
409b15:	e8 39 c9 ff ff       	call   0x406453
409b1a:	59                   	pop    %ecx
409b1b:	8b 46 54             	mov    0x54(%esi),%eax
409b1e:	3b c5                	cmp    %ebp,%eax
409b20:	74 10                	je     0x409b32
409b22:	50                   	push   %eax
409b23:	ff d3                	call   *%ebx
409b25:	85 c0                	test   %eax,%eax
409b27:	75 09                	jne    0x409b32
409b29:	ff 76 54             	push   0x54(%esi)
409b2c:	e8 22 c9 ff ff       	call   0x406453
409b31:	59                   	pop    %ecx
409b32:	8b 44 24 18          	mov    0x18(%esp),%eax
409b36:	89 46 50             	mov    %eax,0x50(%esi)
409b39:	89 7e 48             	mov    %edi,0x48(%esi)
409b3c:	8b c7                	mov    %edi,%eax
409b3e:	eb 47                	jmp    0x409b87
409b40:	ff 74 24 18          	push   0x18(%esp)
409b44:	e8 0a c9 ff ff       	call   0x406453
409b49:	8b 46 50             	mov    0x50(%esi),%eax
409b4c:	3b c5                	cmp    %ebp,%eax
409b4e:	8b 3d 98 70 41 00    	mov    0x417098,%edi
409b54:	59                   	pop    %ecx
409b55:	74 10                	je     0x409b67
409b57:	50                   	push   %eax
409b58:	ff d7                	call   *%edi
409b5a:	85 c0                	test   %eax,%eax
409b5c:	75 09                	jne    0x409b67
409b5e:	ff 76 50             	push   0x50(%esi)
409b61:	e8 ed c8 ff ff       	call   0x406453
409b66:	59                   	pop    %ecx
409b67:	8b 46 54             	mov    0x54(%esi),%eax
409b6a:	3b c5                	cmp    %ebp,%eax
409b6c:	74 10                	je     0x409b7e
409b6e:	50                   	push   %eax
409b6f:	ff d7                	call   *%edi
409b71:	85 c0                	test   %eax,%eax
409b73:	75 09                	jne    0x409b7e
409b75:	ff 76 54             	push   0x54(%esi)
409b78:	e8 d6 c8 ff ff       	call   0x406453
409b7d:	59                   	pop    %ecx
409b7e:	8b 46 68             	mov    0x68(%esi),%eax
409b81:	89 6e 50             	mov    %ebp,0x50(%esi)
409b84:	89 6e 48             	mov    %ebp,0x48(%esi)
409b87:	5f                   	pop    %edi
409b88:	89 6e 4c             	mov    %ebp,0x4c(%esi)
409b8b:	89 6e 54             	mov    %ebp,0x54(%esi)
409b8e:	5d                   	pop    %ebp
409b8f:	5b                   	pop    %ebx
409b90:	83 c4 10             	add    $0x10,%esp
409b93:	c3                   	ret
409b94:	55                   	push   %ebp
409b95:	8d 6c 24 a0          	lea    -0x60(%esp),%ebp
409b99:	81 ec b4 00 00 00    	sub    $0xb4,%esp
409b9f:	a1 20 c5 41 00       	mov    0x41c520,%eax
409ba4:	33 c5                	xor    %ebp,%eax
409ba6:	89 45 5c             	mov    %eax,0x5c(%ebp)
409ba9:	8b 45 6c             	mov    0x6c(%ebp),%eax
409bac:	53                   	push   %ebx
409bad:	56                   	push   %esi
409bae:	8b 75 68             	mov    0x68(%ebp),%esi
409bb1:	57                   	push   %edi
409bb2:	8b 7d 74             	mov    0x74(%ebp),%edi
409bb5:	89 45 c4             	mov    %eax,-0x3c(%ebp)
409bb8:	8b 45 78             	mov    0x78(%ebp),%eax
409bbb:	89 7d bc             	mov    %edi,-0x44(%ebp)
409bbe:	89 45 c0             	mov    %eax,-0x40(%ebp)
409bc1:	e8 86 29 00 00       	call   0x40c54c
409bc6:	05 9c 00 00 00       	add    $0x9c,%eax
409bcb:	8d 48 28             	lea    0x28(%eax),%ecx
409bce:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
409bd1:	8d 48 2c             	lea    0x2c(%eax),%ecx
409bd4:	8d 58 20             	lea    0x20(%eax),%ebx
409bd7:	05 af 00 00 00       	add    $0xaf,%eax
409bdc:	85 f6                	test   %esi,%esi
409bde:	89 4d b8             	mov    %ecx,-0x48(%ebp)
409be1:	89 45 c8             	mov    %eax,-0x38(%ebp)
409be4:	0f 84 6a 01 00 00    	je     0x409d54
409bea:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
409bee:	0f 84 60 01 00 00    	je     0x409d54
409bf4:	83 7d 70 00          	cmpl   $0x0,0x70(%ebp)
409bf8:	0f 84 56 01 00 00    	je     0x409d54
409bfe:	80 3e 43             	cmpb   $0x43,(%esi)
409c01:	75 4c                	jne    0x409c4f
409c03:	80 7e 01 00          	cmpb   $0x0,0x1(%esi)
409c07:	75 46                	jne    0x409c4f
409c09:	68 ac 75 41 00       	push   $0x4175ac
409c0e:	ff 75 70             	push   0x70(%ebp)
409c11:	ff 75 c4             	push   -0x3c(%ebp)
409c14:	e8 82 10 00 00       	call   0x40ac9b
409c19:	83 c4 0c             	add    $0xc,%esp
409c1c:	33 f6                	xor    %esi,%esi
409c1e:	85 c0                	test   %eax,%eax
409c20:	74 0d                	je     0x409c2f
409c22:	56                   	push   %esi
409c23:	56                   	push   %esi
409c24:	56                   	push   %esi
409c25:	56                   	push   %esi
409c26:	56                   	push   %esi
409c27:	e8 28 d9 ff ff       	call   0x407554
409c2c:	83 c4 14             	add    $0x14,%esp
409c2f:	3b fe                	cmp    %esi,%edi
409c31:	74 0b                	je     0x409c3e
409c33:	66 89 37             	mov    %si,(%edi)
409c36:	66 89 77 02          	mov    %si,0x2(%edi)
409c3a:	66 89 77 04          	mov    %si,0x4(%edi)
409c3e:	8b 45 c0             	mov    -0x40(%ebp),%eax
409c41:	3b c6                	cmp    %esi,%eax
409c43:	74 02                	je     0x409c47
409c45:	89 30                	mov    %esi,(%eax)
409c47:	8b 45 c4             	mov    -0x3c(%ebp),%eax
409c4a:	e9 07 01 00 00       	jmp    0x409d56
409c4f:	56                   	push   %esi
409c50:	e8 0b cb ff ff       	call   0x406760
409c55:	bf 83 00 00 00       	mov    $0x83,%edi
409c5a:	3b c7                	cmp    %edi,%eax
409c5c:	59                   	pop    %ecx
409c5d:	89 45 b0             	mov    %eax,-0x50(%ebp)
409c60:	73 22                	jae    0x409c84
409c62:	56                   	push   %esi
409c63:	ff 75 c8             	push   -0x38(%ebp)
409c66:	e8 25 12 00 00       	call   0x40ae90
409c6b:	85 c0                	test   %eax,%eax
409c6d:	59                   	pop    %ecx
409c6e:	59                   	pop    %ecx
409c6f:	0f 84 8e 00 00 00    	je     0x409d03
409c75:	56                   	push   %esi
409c76:	ff 75 b8             	push   -0x48(%ebp)
409c79:	e8 12 12 00 00       	call   0x40ae90
409c7e:	85 c0                	test   %eax,%eax
409c80:	59                   	pop    %ecx
409c81:	59                   	pop    %ecx
409c82:	74 7f                	je     0x409d03
409c84:	83 65 ac 00          	andl   $0x0,-0x54(%ebp)
409c88:	8d 45 cc             	lea    -0x34(%ebp),%eax
409c8b:	56                   	push   %esi
409c8c:	50                   	push   %eax
409c8d:	e8 fd fb ff ff       	call   0x40988f
409c92:	85 c0                	test   %eax,%eax
409c94:	59                   	pop    %ecx
409c95:	59                   	pop    %ecx
409c96:	0f 85 b8 00 00 00    	jne    0x409d54
409c9c:	8d 45 cc             	lea    -0x34(%ebp),%eax
409c9f:	50                   	push   %eax
409ca0:	53                   	push   %ebx
409ca1:	50                   	push   %eax
409ca2:	e8 7c 83 00 00       	call   0x412023
409ca7:	83 c4 0c             	add    $0xc,%esp
409caa:	85 c0                	test   %eax,%eax
409cac:	0f 84 a2 00 00 00    	je     0x409d54
409cb2:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
409cb6:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
409cb9:	89 01                	mov    %eax,(%ecx)
409cbb:	8d 45 cc             	lea    -0x34(%ebp),%eax
409cbe:	50                   	push   %eax
409cbf:	57                   	push   %edi
409cc0:	ff 75 c8             	push   -0x38(%ebp)
409cc3:	e8 f0 fc ff ff       	call   0x4099b8
409cc8:	83 c4 0c             	add    $0xc,%esp
409ccb:	80 3e 00             	cmpb   $0x0,(%esi)
409cce:	74 07                	je     0x409cd7
409cd0:	8b 45 b0             	mov    -0x50(%ebp),%eax
409cd3:	3b c7                	cmp    %edi,%eax
409cd5:	72 08                	jb     0x409cdf
409cd7:	8b 45 ac             	mov    -0x54(%ebp),%eax
409cda:	be 0e 76 41 00       	mov    $0x41760e,%esi