40777f:	66 f7 45 fc 30 08    	testw  $0x830,-0x4(%ebp)
407785:	75 04                	jne    0x40778b
407787:	80 4d fd 08          	orb    $0x8,-0x3(%ebp)
40778b:	66 f7 45 fc 10 08    	testw  $0x810,-0x4(%ebp)
407791:	8d 45 10             	lea    0x10(%ebp),%eax
407794:	50                   	push   %eax
407795:	74 3b                	je     0x4077d2
407797:	e8 30 05 00 00       	call   0x407ccc
40779c:	50                   	push   %eax
40779d:	8d 85 b8 fd ff ff    	lea    -0x248(%ebp),%eax
4077a3:	50                   	push   %eax
4077a4:	e8 70 27 00 00       	call   0x409f19
4077a9:	83 c4 0c             	add    $0xc,%esp
4077ac:	89 45 f4             	mov    %eax,-0xc(%ebp)
4077af:	85 c0                	test   %eax,%eax
4077b1:	7d 32                	jge    0x4077e5
4077b3:	c7 45 d8 01 00 00 00 	movl   $0x1,-0x28(%ebp)
4077ba:	eb 29                	jmp    0x4077e5
4077bc:	83 e8 5a             	sub    $0x5a,%eax
4077bf:	74 32                	je     0x4077f3
4077c1:	83 e8 09             	sub    $0x9,%eax
4077c4:	74 c5                	je     0x40778b
4077c6:	48                   	dec    %eax
4077c7:	0f 84 e8 01 00 00    	je     0x4079b5
4077cd:	e9 08 03 00 00       	jmp    0x407ada
4077d2:	e8 d8 04 00 00       	call   0x407caf
4077d7:	59                   	pop    %ecx
4077d8:	88 85 b8 fd ff ff    	mov    %al,-0x248(%ebp)
4077de:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
4077e5:	8d 85 b8 fd ff ff    	lea    -0x248(%ebp),%eax
4077eb:	89 45 f8             	mov    %eax,-0x8(%ebp)
4077ee:	e9 e7 02 00 00       	jmp    0x407ada
4077f3:	8d 45 10             	lea    0x10(%ebp),%eax
4077f6:	50                   	push   %eax
4077f7:	e8 b3 04 00 00       	call   0x407caf
4077fc:	85 c0                	test   %eax,%eax
4077fe:	59                   	pop    %ecx
4077ff:	74 33                	je     0x407834
407801:	8b 48 04             	mov    0x4(%eax),%ecx
407804:	85 c9                	test   %ecx,%ecx
407806:	74 2c                	je     0x407834
407808:	f6 45 fd 08          	testb  $0x8,-0x3(%ebp)
40780c:	74 17                	je     0x407825
40780e:	0f bf 00             	movswl (%eax),%eax
407811:	d1 e8                	shr    $1,%eax
407813:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407816:	89 45 f4             	mov    %eax,-0xc(%ebp)
407819:	c7 45 dc 01 00 00 00 	movl   $0x1,-0x24(%ebp)
407820:	e9 b5 02 00 00       	jmp    0x407ada
407825:	83 65 dc 00          	andl   $0x0,-0x24(%ebp)
407829:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40782c:	0f bf 00             	movswl (%eax),%eax
40782f:	e9 a3 02 00 00       	jmp    0x407ad7
407834:	a1 6c 0d 41 00       	mov    0x410d6c,%eax
407839:	89 45 f8             	mov    %eax,-0x8(%ebp)
40783c:	50                   	push   %eax
40783d:	e9 8e 00 00 00       	jmp    0x4078d0
407842:	75 0c                	jne    0x407850
407844:	80 fb 67             	cmp    $0x67,%bl
407847:	75 07                	jne    0x407850
407849:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
407850:	8b 45 10             	mov    0x10(%ebp),%eax
407853:	ff 75 cc             	push   -0x34(%ebp)
407856:	83 c0 08             	add    $0x8,%eax
407859:	89 45 10             	mov    %eax,0x10(%ebp)
40785c:	ff 75 f0             	push   -0x10(%ebp)
40785f:	8b 48 f8             	mov    -0x8(%eax),%ecx
407862:	89 4d b8             	mov    %ecx,-0x48(%ebp)
407865:	8b 40 fc             	mov    -0x4(%eax),%eax
407868:	89 45 bc             	mov    %eax,-0x44(%ebp)
40786b:	0f be c3             	movsbl %bl,%eax
40786e:	50                   	push   %eax
40786f:	8d 85 b8 fd ff ff    	lea    -0x248(%ebp),%eax
407875:	50                   	push   %eax
407876:	8d 45 b8             	lea    -0x48(%ebp),%eax
407879:	50                   	push   %eax
40787a:	ff 15 00 0f 41 00    	call   *0x410f00
407880:	8b 75 fc             	mov    -0x4(%ebp),%esi
407883:	83 c4 14             	add    $0x14,%esp
407886:	81 e6 80 00 00 00    	and    $0x80,%esi
40788c:	74 14                	je     0x4078a2
40788e:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
407892:	75 0e                	jne    0x4078a2
407894:	8d 85 b8 fd ff ff    	lea    -0x248(%ebp),%eax
40789a:	50                   	push   %eax
40789b:	ff 15 0c 0f 41 00    	call   *0x410f0c
4078a1:	59                   	pop    %ecx
4078a2:	80 fb 67             	cmp    $0x67,%bl
4078a5:	75 12                	jne    0x4078b9
4078a7:	85 f6                	test   %esi,%esi
4078a9:	75 0e                	jne    0x4078b9
4078ab:	8d 85 b8 fd ff ff    	lea    -0x248(%ebp),%eax
4078b1:	50                   	push   %eax
4078b2:	ff 15 04 0f 41 00    	call   *0x410f04
4078b8:	59                   	pop    %ecx
4078b9:	80 bd b8 fd ff ff 2d 	cmpb   $0x2d,-0x248(%ebp)
4078c0:	75 0d                	jne    0x4078cf
4078c2:	80 4d fd 01          	orb    $0x1,-0x3(%ebp)
4078c6:	8d bd b9 fd ff ff    	lea    -0x247(%ebp),%edi
4078cc:	89 7d f8             	mov    %edi,-0x8(%ebp)
4078cf:	57                   	push   %edi
4078d0:	e8 2b f1 ff ff       	call   0x406a00
4078d5:	59                   	pop    %ecx
4078d6:	e9 fc 01 00 00       	jmp    0x407ad7
4078db:	83 e8 69             	sub    $0x69,%eax
4078de:	0f 84 d1 00 00 00    	je     0x4079b5
4078e4:	83 e8 05             	sub    $0x5,%eax
4078e7:	0f 84 9e 00 00 00    	je     0x40798b
4078ed:	48                   	dec    %eax
4078ee:	0f 84 84 00 00 00    	je     0x407978
4078f4:	48                   	dec    %eax
4078f5:	74 51                	je     0x407948
4078f7:	83 e8 03             	sub    $0x3,%eax
4078fa:	0f 84 fd fd ff ff    	je     0x4076fd
407900:	48                   	dec    %eax
407901:	48                   	dec    %eax
407902:	0f 84 b1 00 00 00    	je     0x4079b9
407908:	83 e8 03             	sub    $0x3,%eax
40790b:	0f 85 c9 01 00 00    	jne    0x407ada
407911:	c7 45 d4 27 00 00 00 	movl   $0x27,-0x2c(%ebp)
407918:	eb 3c                	jmp    0x407956
40791a:	2b c1                	sub    %ecx,%eax
40791c:	d1 f8                	sar    $1,%eax
40791e:	e9 b4 01 00 00       	jmp    0x407ad7
407923:	85 c9                	test   %ecx,%ecx
407925:	75 09                	jne    0x407930
407927:	8b 0d 6c 0d 41 00    	mov    0x410d6c,%ecx
40792d:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407930:	8b c1                	mov    %ecx,%eax
407932:	8b d6                	mov    %esi,%edx
407934:	4e                   	dec    %esi
407935:	85 d2                	test   %edx,%edx
407937:	74 08                	je     0x407941
407939:	80 38 00             	cmpb   $0x0,(%eax)
40793c:	74 03                	je     0x407941
40793e:	40                   	inc    %eax
40793f:	eb f1                	jmp    0x407932
407941:	2b c1                	sub    %ecx,%eax
407943:	e9 8f 01 00 00       	jmp    0x407ad7
407948:	c7 45 f0 08 00 00 00 	movl   $0x8,-0x10(%ebp)
40794f:	c7 45 d4 07 00 00 00 	movl   $0x7,-0x2c(%ebp)
407956:	f6 45 fc 80          	testb  $0x80,-0x4(%ebp)
40795a:	c7 45 f4 10 00 00 00 	movl   $0x10,-0xc(%ebp)
407961:	74 5d                	je     0x4079c0
407963:	8a 45 d4             	mov    -0x2c(%ebp),%al
407966:	c6 45 ea 30          	movb   $0x30,-0x16(%ebp)
40796a:	04 51                	add    $0x51,%al
40796c:	c7 45 e4 02 00 00 00 	movl   $0x2,-0x1c(%ebp)
407973:	88 45 eb             	mov    %al,-0x15(%ebp)
407976:	eb 48                	jmp    0x4079c0
407978:	f6 45 fc 80          	testb  $0x80,-0x4(%ebp)
40797c:	c7 45 f4 08 00 00 00 	movl   $0x8,-0xc(%ebp)
407983:	74 3b                	je     0x4079c0
407985:	80 4d fd 02          	orb    $0x2,-0x3(%ebp)
407989:	eb 35                	jmp    0x4079c0
40798b:	8d 45 10             	lea    0x10(%ebp),%eax
40798e:	50                   	push   %eax
40798f:	e8 1b 03 00 00       	call   0x407caf
407994:	f6 45 fc 20          	testb  $0x20,-0x4(%ebp)
407998:	59                   	pop    %ecx
407999:	74 09                	je     0x4079a4
40799b:	66 8b 4d ec          	mov    -0x14(%ebp),%cx
40799f:	66 89 08             	mov    %cx,(%eax)
4079a2:	eb 05                	jmp    0x4079a9
4079a4:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4079a7:	89 08                	mov    %ecx,(%eax)
4079a9:	c7 45 d8 01 00 00 00 	movl   $0x1,-0x28(%ebp)
4079b0:	e9 23 02 00 00       	jmp    0x407bd8
4079b5:	83 4d fc 40          	orl    $0x40,-0x4(%ebp)
4079b9:	c7 45 f4 0a 00 00 00 	movl   $0xa,-0xc(%ebp)
4079c0:	f6 45 fd 80          	testb  $0x80,-0x3(%ebp)
4079c4:	74 0c                	je     0x4079d2
4079c6:	8d 45 10             	lea    0x10(%ebp),%eax
4079c9:	50                   	push   %eax
4079ca:	e8 ed 02 00 00       	call   0x407cbc
4079cf:	59                   	pop    %ecx
4079d0:	eb 41                	jmp    0x407a13
4079d2:	f6 45 fc 20          	testb  $0x20,-0x4(%ebp)
4079d6:	74 21                	je     0x4079f9
4079d8:	f6 45 fc 40          	testb  $0x40,-0x4(%ebp)
4079dc:	8d 45 10             	lea    0x10(%ebp),%eax
4079df:	50                   	push   %eax
4079e0:	74 0c                	je     0x4079ee
4079e2:	e8 c8 02 00 00       	call   0x407caf
4079e7:	59                   	pop    %ecx
4079e8:	0f bf c0             	movswl %ax,%eax
4079eb:	99                   	cltd
4079ec:	eb 25                	jmp    0x407a13
4079ee:	e8 bc 02 00 00       	call   0x407caf
4079f3:	59                   	pop    %ecx
4079f4:	0f b7 c0             	movzwl %ax,%eax
4079f7:	eb f2                	jmp    0x4079eb
4079f9:	f6 45 fc 40          	testb  $0x40,-0x4(%ebp)
4079fd:	8d 45 10             	lea    0x10(%ebp),%eax
407a00:	50                   	push   %eax
407a01:	74 08                	je     0x407a0b
407a03:	e8 a7 02 00 00       	call   0x407caf
407a08:	59                   	pop    %ecx
407a09:	eb e0                	jmp    0x4079eb
407a0b:	e8 9f 02 00 00       	call   0x407caf
407a10:	59                   	pop    %ecx
407a11:	33 d2                	xor    %edx,%edx
407a13:	f6 45 fc 40          	testb  $0x40,-0x4(%ebp)
407a17:	74 1b                	je     0x407a34
407a19:	85 d2                	test   %edx,%edx
407a1b:	7f 17                	jg     0x407a34
407a1d:	7c 04                	jl     0x407a23
407a1f:	85 c0                	test   %eax,%eax
407a21:	73 11                	jae    0x407a34
407a23:	f7 d8                	neg    %eax
407a25:	83 d2 00             	adc    $0x0,%edx
407a28:	8b f0                	mov    %eax,%esi
407a2a:	f7 da                	neg    %edx
407a2c:	80 4d fd 01          	orb    $0x1,-0x3(%ebp)
407a30:	8b fa                	mov    %edx,%edi
407a32:	eb 04                	jmp    0x407a38
407a34:	8b f0                	mov    %eax,%esi
407a36:	8b fa                	mov    %edx,%edi
407a38:	f6 45 fd 80          	testb  $0x80,-0x3(%ebp)
407a3c:	75 03                	jne    0x407a41
407a3e:	83 e7 00             	and    $0x0,%edi
407a41:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
407a45:	7d 09                	jge    0x407a50
407a47:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
407a4e:	eb 04                	jmp    0x407a54
407a50:	83 65 fc f7          	andl   $0xfffffff7,-0x4(%ebp)
407a54:	8b c6                	mov    %esi,%eax
407a56:	0b c7                	or     %edi,%eax
407a58:	75 04                	jne    0x407a5e
407a5a:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
407a5e:	8d 45 b7             	lea    -0x49(%ebp),%eax
407a61:	89 45 f8             	mov    %eax,-0x8(%ebp)
407a64:	8b 45 f0             	mov    -0x10(%ebp),%eax
407a67:	ff 4d f0             	decl   -0x10(%ebp)
407a6a:	85 c0                	test   %eax,%eax
407a6c:	7f 06                	jg     0x407a74
407a6e:	8b c6                	mov    %esi,%eax
407a70:	0b c7                	or     %edi,%eax
407a72:	74 3b                	je     0x407aaf
407a74:	8b 45 f4             	mov    -0xc(%ebp),%eax
407a77:	99                   	cltd
407a78:	52                   	push   %edx
407a79:	50                   	push   %eax
407a7a:	57                   	push   %edi
407a7b:	56                   	push   %esi
407a7c:	89 45 c0             	mov    %eax,-0x40(%ebp)
407a7f:	89 55 c4             	mov    %edx,-0x3c(%ebp)
407a82:	e8 79 36 00 00       	call   0x40b100
407a87:	ff 75 c4             	push   -0x3c(%ebp)
407a8a:	8b d8                	mov    %eax,%ebx
407a8c:	83 c3 30             	add    $0x30,%ebx
407a8f:	ff 75 c0             	push   -0x40(%ebp)
407a92:	57                   	push   %edi
407a93:	56                   	push   %esi
407a94:	e8 f7 35 00 00       	call   0x40b090
407a99:	83 fb 39             	cmp    $0x39,%ebx
407a9c:	8b f0                	mov    %eax,%esi
407a9e:	8b fa                	mov    %edx,%edi
407aa0:	7e 03                	jle    0x407aa5
407aa2:	03 5d d4             	add    -0x2c(%ebp),%ebx
407aa5:	8b 45 f8             	mov    -0x8(%ebp),%eax
407aa8:	ff 4d f8             	decl   -0x8(%ebp)
407aab:	88 18                	mov    %bl,(%eax)
407aad:	eb b5                	jmp    0x407a64
407aaf:	8d 45 b7             	lea    -0x49(%ebp),%eax
407ab2:	2b 45 f8             	sub    -0x8(%ebp),%eax
407ab5:	ff 45 f8             	incl   -0x8(%ebp)
407ab8:	f6 45 fd 02          	testb  $0x2,-0x3(%ebp)
407abc:	89 45 f4             	mov    %eax,-0xc(%ebp)
407abf:	74 19                	je     0x407ada
407ac1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407ac4:	80 39 30             	cmpb   $0x30,(%ecx)
407ac7:	75 04                	jne    0x407acd
407ac9:	85 c0                	test   %eax,%eax
407acb:	75 0d                	jne    0x407ada
407acd:	ff 4d f8             	decl   -0x8(%ebp)
407ad0:	40                   	inc    %eax
407ad1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407ad4:	c6 01 30             	movb   $0x30,(%ecx)
407ad7:	89 45 f4             	mov    %eax,-0xc(%ebp)
407ada:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
407ade:	0f 85 f4 00 00 00    	jne    0x407bd8
407ae4:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407ae7:	f6 c3 40             	test   $0x40,%bl
407aea:	74 26                	je     0x407b12
407aec:	f6 c7 01             	test   $0x1,%bh
407aef:	74 06                	je     0x407af7
407af1:	c6 45 ea 2d          	movb   $0x2d,-0x16(%ebp)
407af5:	eb 14                	jmp    0x407b0b
407af7:	f6 c3 01             	test   $0x1,%bl
407afa:	74 06                	je     0x407b02
407afc:	c6 45 ea 2b          	movb   $0x2b,-0x16(%ebp)
407b00:	eb 09                	jmp    0x407b0b
407b02:	f6 c3 02             	test   $0x2,%bl
407b05:	74 0b                	je     0x407b12
407b07:	c6 45 ea 20          	movb   $0x20,-0x16(%ebp)
407b0b:	c7 45 e4 01 00 00 00 	movl   $0x1,-0x1c(%ebp)
407b12:	8b 75 e0             	mov    -0x20(%ebp),%esi
407b15:	2b 75 e4             	sub    -0x1c(%ebp),%esi
407b18:	2b 75 f4             	sub    -0xc(%ebp),%esi
407b1b:	f6 c3 0c             	test   $0xc,%bl
407b1e:	75 12                	jne    0x407b32
407b20:	8d 45 ec             	lea    -0x14(%ebp),%eax
407b23:	50                   	push   %eax
407b24:	ff 75 08             	push   0x8(%ebp)
407b27:	56                   	push   %esi
407b28:	6a 20                	push   $0x20
407b2a:	e8 17 01 00 00       	call   0x407c46
407b2f:	83 c4 10             	add    $0x10,%esp
407b32:	8d 45 ec             	lea    -0x14(%ebp),%eax
407b35:	50                   	push   %eax
407b36:	8d 45 ea             	lea    -0x16(%ebp),%eax
407b39:	ff 75 08             	push   0x8(%ebp)
407b3c:	ff 75 e4             	push   -0x1c(%ebp)
407b3f:	50                   	push   %eax
407b40:	e8 32 01 00 00       	call   0x407c77
407b45:	83 c4 10             	add    $0x10,%esp
407b48:	f6 c3 08             	test   $0x8,%bl
407b4b:	74 17                	je     0x407b64
407b4d:	f6 c3 04             	test   $0x4,%bl
407b50:	75 12                	jne    0x407b64
407b52:	8d 45 ec             	lea    -0x14(%ebp),%eax
407b55:	50                   	push   %eax
407b56:	ff 75 08             	push   0x8(%ebp)
407b59:	56                   	push   %esi
407b5a:	6a 30                	push   $0x30
407b5c:	e8 e5 00 00 00       	call   0x407c46
407b61:	83 c4 10             	add    $0x10,%esp
407b64:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
407b68:	74 41                	je     0x407bab
407b6a:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
407b6e:	7e 3b                	jle    0x407bab
407b70:	8b 45 f4             	mov    -0xc(%ebp),%eax
407b73:	8b 5d f8             	mov    -0x8(%ebp),%ebx
407b76:	8d 78 ff             	lea    -0x1(%eax),%edi
407b79:	66 8b 03             	mov    (%ebx),%ax
407b7c:	43                   	inc    %ebx
407b7d:	50                   	push   %eax
407b7e:	8d 45 c8             	lea    -0x38(%ebp),%eax
407b81:	50                   	push   %eax
407b82:	43                   	inc    %ebx
407b83:	e8 91 23 00 00       	call   0x409f19
407b88:	59                   	pop    %ecx
407b89:	85 c0                	test   %eax,%eax
407b8b:	59                   	pop    %ecx
407b8c:	7e 32                	jle    0x407bc0
407b8e:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407b91:	51                   	push   %ecx
407b92:	ff 75 08             	push   0x8(%ebp)
407b95:	50                   	push   %eax