4079a7:	7c 04                	jl     0x4079ad
4079a9:	3b cb                	cmp    %ebx,%ecx
4079ab:	73 0c                	jae    0x4079b9
4079ad:	f7 d9                	neg    %ecx
4079af:	13 d3                	adc    %ebx,%edx
4079b1:	f7 da                	neg    %edx
4079b3:	83 cf 40             	or     $0x40,%edi
4079b6:	89 7e 1c             	mov    %edi,0x1c(%esi)
4079b9:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
4079bd:	89 55 f8             	mov    %edx,-0x8(%ebp)
4079c0:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4079c3:	7d 09                	jge    0x4079ce
4079c5:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
4079cc:	eb 1a                	jmp    0x4079e8
4079ce:	ff 76 08             	push   0x8(%esi)
4079d1:	83 e7 f7             	and    $0xfffffff7,%edi
4079d4:	8d 4e 3c             	lea    0x3c(%esi),%ecx
4079d7:	ff 76 24             	push   0x24(%esi)
4079da:	89 7e 1c             	mov    %edi,0x1c(%esi)
4079dd:	e8 bb fb ff ff       	call   0x40759d
4079e2:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4079e5:	8b 55 f8             	mov    -0x8(%ebp),%edx
4079e8:	8b c1                	mov    %ecx,%eax
4079ea:	0b c2                	or     %edx,%eax
4079ec:	75 04                	jne    0x4079f2
4079ee:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
4079f2:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
4079f6:	ff 75 08             	push   0x8(%ebp)
4079f9:	88 5e 38             	mov    %bl,0x38(%esi)
4079fc:	75 0b                	jne    0x407a09
4079fe:	52                   	push   %edx
4079ff:	51                   	push   %ecx
407a00:	8b ce                	mov    %esi,%ecx
407a02:	e8 b7 04 00 00       	call   0x407ebe
407a07:	eb 08                	jmp    0x407a11
407a09:	51                   	push   %ecx
407a0a:	8b ce                	mov    %esi,%ecx
407a0c:	e8 46 03 00 00       	call   0x407d57
407a11:	8b 46 1c             	mov    0x1c(%esi),%eax
407a14:	c1 e8 07             	shr    $0x7,%eax
407a17:	a8 01                	test   $0x1,%al
407a19:	74 19                	je     0x407a34
407a1b:	39 5e 34             	cmp    %ebx,0x34(%esi)
407a1e:	74 08                	je     0x407a28
407a20:	8b 46 30             	mov    0x30(%esi),%eax
407a23:	80 38 30             	cmpb   $0x30,(%eax)
407a26:	74 0c                	je     0x407a34
407a28:	ff 4e 30             	decl   0x30(%esi)
407a2b:	8b 4e 30             	mov    0x30(%esi),%ecx
407a2e:	c6 01 30             	movb   $0x30,(%ecx)
407a31:	ff 46 34             	incl   0x34(%esi)
407a34:	b0 01                	mov    $0x1,%al
407a36:	5f                   	pop    %edi
407a37:	5e                   	pop    %esi
407a38:	5b                   	pop    %ebx
407a39:	c9                   	leave
407a3a:	c2 04 00             	ret    $0x4
407a3d:	8b ff                	mov    %edi,%edi
407a3f:	55                   	push   %ebp
407a40:	8b ec                	mov    %esp,%ebp
407a42:	83 ec 0c             	sub    $0xc,%esp
407a45:	53                   	push   %ebx
407a46:	56                   	push   %esi
407a47:	8b f1                	mov    %ecx,%esi
407a49:	57                   	push   %edi
407a4a:	ff 76 28             	push   0x28(%esi)
407a4d:	e8 10 10 00 00       	call   0x408a62
407a52:	59                   	pop    %ecx
407a53:	8b c8                	mov    %eax,%ecx
407a55:	89 45 f4             	mov    %eax,-0xc(%ebp)
407a58:	6a 00                	push   $0x0
407a5a:	5b                   	pop    %ebx
407a5b:	83 e9 01             	sub    $0x1,%ecx
407a5e:	0f 84 99 00 00 00    	je     0x407afd
407a64:	83 e9 01             	sub    $0x1,%ecx
407a67:	74 75                	je     0x407ade
407a69:	49                   	dec    %ecx
407a6a:	83 e9 01             	sub    $0x1,%ecx
407a6d:	74 46                	je     0x407ab5
407a6f:	83 e9 04             	sub    $0x4,%ecx
407a72:	74 27                	je     0x407a9b
407a74:	8b 46 08             	mov    0x8(%esi),%eax
407a77:	83 c0 18             	add    $0x18,%eax
407a7a:	c6 40 04 01          	movb   $0x1,0x4(%eax)
407a7e:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407a84:	ff 76 08             	push   0x8(%esi)
407a87:	53                   	push   %ebx
407a88:	53                   	push   %ebx
407a89:	53                   	push   %ebx
407a8a:	53                   	push   %ebx
407a8b:	53                   	push   %ebx
407a8c:	e8 bb f9 ff ff       	call   0x40744c
407a91:	83 c4 18             	add    $0x18,%esp
407a94:	32 c0                	xor    %al,%al
407a96:	e9 28 01 00 00       	jmp    0x407bc3
407a9b:	8b 4e 10             	mov    0x10(%esi),%ecx
407a9e:	8b 7e 1c             	mov    0x1c(%esi),%edi
407aa1:	8b c7                	mov    %edi,%eax
407aa3:	c1 e8 04             	shr    $0x4,%eax
407aa6:	a8 01                	test   $0x1,%al
407aa8:	8d 41 08             	lea    0x8(%ecx),%eax
407aab:	89 46 10             	mov    %eax,0x10(%esi)
407aae:	8b 01                	mov    (%ecx),%eax
407ab0:	8b 51 04             	mov    0x4(%ecx),%edx
407ab3:	eb 66                	jmp    0x407b1b
407ab5:	8b 7e 1c             	mov    0x1c(%esi),%edi
407ab8:	8b c7                	mov    %edi,%eax
407aba:	c1 e8 04             	shr    $0x4,%eax
407abd:	a8 01                	test   $0x1,%al
407abf:	74 0d                	je     0x407ace
407ac1:	8b 46 10             	mov    0x10(%esi),%eax
407ac4:	8d 48 04             	lea    0x4(%eax),%ecx
407ac7:	89 4e 10             	mov    %ecx,0x10(%esi)
407aca:	8b 00                	mov    (%eax),%eax
407acc:	eb 4c                	jmp    0x407b1a
407ace:	8b 4e 10             	mov    0x10(%esi),%ecx
407ad1:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407ad4:	8d 41 04             	lea    0x4(%ecx),%eax
407ad7:	89 46 10             	mov    %eax,0x10(%esi)
407ada:	8b 01                	mov    (%ecx),%eax
407adc:	eb 40                	jmp    0x407b1e
407ade:	8b 7e 1c             	mov    0x1c(%esi),%edi
407ae1:	8b c7                	mov    %edi,%eax
407ae3:	8b 4e 10             	mov    0x10(%esi),%ecx
407ae6:	c1 e8 04             	shr    $0x4,%eax
407ae9:	a8 01                	test   $0x1,%al
407aeb:	8d 41 04             	lea    0x4(%ecx),%eax
407aee:	89 46 10             	mov    %eax,0x10(%esi)
407af1:	74 05                	je     0x407af8
407af3:	0f bf 01             	movswl (%ecx),%eax
407af6:	eb 22                	jmp    0x407b1a
407af8:	0f b7 01             	movzwl (%ecx),%eax
407afb:	eb 1d                	jmp    0x407b1a
407afd:	8b 7e 1c             	mov    0x1c(%esi),%edi
407b00:	8b c7                	mov    %edi,%eax
407b02:	8b 4e 10             	mov    0x10(%esi),%ecx
407b05:	c1 e8 04             	shr    $0x4,%eax
407b08:	a8 01                	test   $0x1,%al
407b0a:	8d 41 04             	lea    0x4(%ecx),%eax
407b0d:	89 46 10             	mov    %eax,0x10(%esi)
407b10:	74 05                	je     0x407b17
407b12:	0f be 01             	movsbl (%ecx),%eax
407b15:	eb 03                	jmp    0x407b1a
407b17:	0f b6 01             	movzbl (%ecx),%eax
407b1a:	99                   	cltd
407b1b:	89 55 f8             	mov    %edx,-0x8(%ebp)
407b1e:	8b 55 f8             	mov    -0x8(%ebp),%edx
407b21:	89 45 fc             	mov    %eax,-0x4(%ebp)
407b24:	8b c7                	mov    %edi,%eax
407b26:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407b29:	c1 e8 04             	shr    $0x4,%eax
407b2c:	a8 01                	test   $0x1,%al
407b2e:	74 16                	je     0x407b46
407b30:	3b d3                	cmp    %ebx,%edx
407b32:	7f 12                	jg     0x407b46
407b34:	7c 04                	jl     0x407b3a
407b36:	3b cb                	cmp    %ebx,%ecx
407b38:	73 0c                	jae    0x407b46
407b3a:	f7 d9                	neg    %ecx
407b3c:	13 d3                	adc    %ebx,%edx
407b3e:	f7 da                	neg    %edx
407b40:	83 cf 40             	or     $0x40,%edi
407b43:	89 7e 1c             	mov    %edi,0x1c(%esi)
407b46:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
407b4a:	89 55 f8             	mov    %edx,-0x8(%ebp)
407b4d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407b50:	7d 09                	jge    0x407b5b
407b52:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
407b59:	eb 1a                	jmp    0x407b75
407b5b:	ff 76 08             	push   0x8(%esi)
407b5e:	83 e7 f7             	and    $0xfffffff7,%edi
407b61:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407b64:	ff 76 24             	push   0x24(%esi)
407b67:	89 7e 1c             	mov    %edi,0x1c(%esi)
407b6a:	e8 2e fa ff ff       	call   0x40759d
407b6f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407b72:	8b 55 f8             	mov    -0x8(%ebp),%edx
407b75:	8b c1                	mov    %ecx,%eax
407b77:	0b c2                	or     %edx,%eax
407b79:	75 04                	jne    0x407b7f
407b7b:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
407b7f:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
407b83:	ff 75 08             	push   0x8(%ebp)
407b86:	88 5e 38             	mov    %bl,0x38(%esi)
407b89:	75 0b                	jne    0x407b96
407b8b:	52                   	push   %edx
407b8c:	51                   	push   %ecx
407b8d:	8b ce                	mov    %esi,%ecx
407b8f:	e8 a2 03 00 00       	call   0x407f36
407b94:	eb 08                	jmp    0x407b9e
407b96:	51                   	push   %ecx
407b97:	8b ce                	mov    %esi,%ecx
407b99:	e8 1c 02 00 00       	call   0x407dba
407b9e:	8b 46 1c             	mov    0x1c(%esi),%eax
407ba1:	c1 e8 07             	shr    $0x7,%eax
407ba4:	a8 01                	test   $0x1,%al
407ba6:	74 19                	je     0x407bc1
407ba8:	39 5e 34             	cmp    %ebx,0x34(%esi)
407bab:	74 08                	je     0x407bb5
407bad:	8b 46 30             	mov    0x30(%esi),%eax
407bb0:	80 38 30             	cmpb   $0x30,(%eax)
407bb3:	74 0c                	je     0x407bc1
407bb5:	ff 4e 30             	decl   0x30(%esi)
407bb8:	8b 4e 30             	mov    0x30(%esi),%ecx
407bbb:	c6 01 30             	movb   $0x30,(%ecx)
407bbe:	ff 46 34             	incl   0x34(%esi)
407bc1:	b0 01                	mov    $0x1,%al
407bc3:	5f                   	pop    %edi
407bc4:	5e                   	pop    %esi
407bc5:	5b                   	pop    %ebx
407bc6:	c9                   	leave
407bc7:	c2 04 00             	ret    $0x4
407bca:	8b ff                	mov    %edi,%edi
407bcc:	55                   	push   %ebp
407bcd:	8b ec                	mov    %esp,%ebp
407bcf:	83 ec 0c             	sub    $0xc,%esp
407bd2:	53                   	push   %ebx
407bd3:	56                   	push   %esi
407bd4:	8b f1                	mov    %ecx,%esi
407bd6:	57                   	push   %edi
407bd7:	ff 76 28             	push   0x28(%esi)
407bda:	e8 83 0e 00 00       	call   0x408a62
407bdf:	59                   	pop    %ecx
407be0:	8b c8                	mov    %eax,%ecx
407be2:	89 45 f4             	mov    %eax,-0xc(%ebp)
407be5:	6a 00                	push   $0x0
407be7:	5b                   	pop    %ebx
407be8:	83 e9 01             	sub    $0x1,%ecx
407beb:	0f 84 99 00 00 00    	je     0x407c8a
407bf1:	83 e9 01             	sub    $0x1,%ecx
407bf4:	74 75                	je     0x407c6b
407bf6:	49                   	dec    %ecx
407bf7:	83 e9 01             	sub    $0x1,%ecx
407bfa:	74 46                	je     0x407c42
407bfc:	83 e9 04             	sub    $0x4,%ecx
407bff:	74 27                	je     0x407c28
407c01:	8b 46 08             	mov    0x8(%esi),%eax
407c04:	83 c0 18             	add    $0x18,%eax
407c07:	c6 40 04 01          	movb   $0x1,0x4(%eax)
407c0b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407c11:	ff 76 08             	push   0x8(%esi)
407c14:	53                   	push   %ebx
407c15:	53                   	push   %ebx
407c16:	53                   	push   %ebx
407c17:	53                   	push   %ebx
407c18:	53                   	push   %ebx
407c19:	e8 2e f8 ff ff       	call   0x40744c
407c1e:	83 c4 18             	add    $0x18,%esp
407c21:	32 c0                	xor    %al,%al
407c23:	e9 28 01 00 00       	jmp    0x407d50
407c28:	8b 4e 10             	mov    0x10(%esi),%ecx
407c2b:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c2e:	8b c7                	mov    %edi,%eax
407c30:	c1 e8 04             	shr    $0x4,%eax
407c33:	a8 01                	test   $0x1,%al
407c35:	8d 41 08             	lea    0x8(%ecx),%eax
407c38:	89 46 10             	mov    %eax,0x10(%esi)
407c3b:	8b 01                	mov    (%ecx),%eax
407c3d:	8b 51 04             	mov    0x4(%ecx),%edx
407c40:	eb 66                	jmp    0x407ca8
407c42:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c45:	8b c7                	mov    %edi,%eax
407c47:	c1 e8 04             	shr    $0x4,%eax
407c4a:	a8 01                	test   $0x1,%al
407c4c:	74 0d                	je     0x407c5b
407c4e:	8b 46 10             	mov    0x10(%esi),%eax
407c51:	8d 48 04             	lea    0x4(%eax),%ecx
407c54:	89 4e 10             	mov    %ecx,0x10(%esi)
407c57:	8b 00                	mov    (%eax),%eax
407c59:	eb 4c                	jmp    0x407ca7
407c5b:	8b 4e 10             	mov    0x10(%esi),%ecx
407c5e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407c61:	8d 41 04             	lea    0x4(%ecx),%eax
407c64:	89 46 10             	mov    %eax,0x10(%esi)
407c67:	8b 01                	mov    (%ecx),%eax
407c69:	eb 40                	jmp    0x407cab
407c6b:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c6e:	8b c7                	mov    %edi,%eax
407c70:	8b 4e 10             	mov    0x10(%esi),%ecx
407c73:	c1 e8 04             	shr    $0x4,%eax
407c76:	a8 01                	test   $0x1,%al
407c78:	8d 41 04             	lea    0x4(%ecx),%eax
407c7b:	89 46 10             	mov    %eax,0x10(%esi)
407c7e:	74 05                	je     0x407c85
407c80:	0f bf 01             	movswl (%ecx),%eax
407c83:	eb 22                	jmp    0x407ca7
407c85:	0f b7 01             	movzwl (%ecx),%eax
407c88:	eb 1d                	jmp    0x407ca7
407c8a:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c8d:	8b c7                	mov    %edi,%eax
407c8f:	8b 4e 10             	mov    0x10(%esi),%ecx
407c92:	c1 e8 04             	shr    $0x4,%eax
407c95:	a8 01                	test   $0x1,%al
407c97:	8d 41 04             	lea    0x4(%ecx),%eax
407c9a:	89 46 10             	mov    %eax,0x10(%esi)
407c9d:	74 05                	je     0x407ca4
407c9f:	0f be 01             	movsbl (%ecx),%eax
407ca2:	eb 03                	jmp    0x407ca7
407ca4:	0f b6 01             	movzbl (%ecx),%eax
407ca7:	99                   	cltd
407ca8:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cab:	8b 55 f8             	mov    -0x8(%ebp),%edx
407cae:	89 45 fc             	mov    %eax,-0x4(%ebp)
407cb1:	8b c7                	mov    %edi,%eax
407cb3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407cb6:	c1 e8 04             	shr    $0x4,%eax
407cb9:	a8 01                	test   $0x1,%al
407cbb:	74 16                	je     0x407cd3
407cbd:	3b d3                	cmp    %ebx,%edx
407cbf:	7f 12                	jg     0x407cd3
407cc1:	7c 04                	jl     0x407cc7
407cc3:	3b cb                	cmp    %ebx,%ecx
407cc5:	73 0c                	jae    0x407cd3
407cc7:	f7 d9                	neg    %ecx
407cc9:	13 d3                	adc    %ebx,%edx
407ccb:	f7 da                	neg    %edx
407ccd:	83 cf 40             	or     $0x40,%edi
407cd0:	89 7e 1c             	mov    %edi,0x1c(%esi)
407cd3:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
407cd7:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cda:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407cdd:	7d 09                	jge    0x407ce8
407cdf:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
407ce6:	eb 1a                	jmp    0x407d02
407ce8:	ff 76 08             	push   0x8(%esi)
407ceb:	83 e7 f7             	and    $0xfffffff7,%edi
407cee:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407cf1:	ff 76 24             	push   0x24(%esi)
407cf4:	89 7e 1c             	mov    %edi,0x1c(%esi)
407cf7:	e8 a1 f8 ff ff       	call   0x40759d
407cfc:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407cff:	8b 55 f8             	mov    -0x8(%ebp),%edx
407d02:	8b c1                	mov    %ecx,%eax
407d04:	0b c2                	or     %edx,%eax
407d06:	75 04                	jne    0x407d0c
407d08:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
407d0c:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
407d10:	ff 75 08             	push   0x8(%ebp)
407d13:	88 5e 38             	mov    %bl,0x38(%esi)
407d16:	75 0b                	jne    0x407d23
407d18:	52                   	push   %edx
407d19:	51                   	push   %ecx
407d1a:	8b ce                	mov    %esi,%ecx
407d1c:	e8 bc 02 00 00       	call   0x407fdd
407d21:	eb 08                	jmp    0x407d2b
407d23:	51                   	push   %ecx
407d24:	8b ce                	mov    %esi,%ecx
407d26:	e8 16 01 00 00       	call   0x407e41
407d2b:	8b 46 1c             	mov    0x1c(%esi),%eax
407d2e:	c1 e8 07             	shr    $0x7,%eax