421a3f:	3b ca                	cmp    %edx,%ecx
421a41:	73 34                	jae    0x421a77
421a43:	8b 45 fc             	mov    -0x4(%ebp),%eax
421a46:	0f af c2             	imul   %edx,%eax
421a49:	8d 14 08             	lea    (%eax,%ecx,1),%edx
421a4c:	3b d0                	cmp    %eax,%edx
421a4e:	1b c9                	sbb    %ecx,%ecx
421a50:	f7 d9                	neg    %ecx
421a52:	3b 7d fc             	cmp    -0x4(%ebp),%edi
421a55:	89 55 fc             	mov    %edx,-0x4(%ebp)
421a58:	1b c0                	sbb    %eax,%eax
421a5a:	f7 d8                	neg    %eax
421a5c:	0b c8                	or     %eax,%ecx
421a5e:	c1 e1 02             	shl    $0x2,%ecx
421a61:	83 c9 08             	or     $0x8,%ecx
421a64:	0b d9                	or     %ecx,%ebx
421a66:	8b 4d 0c             	mov    0xc(%ebp),%ecx
421a69:	0f b7 31             	movzwl (%ecx),%esi
421a6c:	83 c1 02             	add    $0x2,%ecx
421a6f:	89 4d 0c             	mov    %ecx,0xc(%ebp)
421a72:	e9 3f fe ff ff       	jmp    0x4218b6
421a77:	56                   	push   %esi
421a78:	8d 4d 0c             	lea    0xc(%ebp),%ecx
421a7b:	e8 f0 2a 00 00       	call   0x424570
421a80:	f6 c3 08             	test   $0x8,%bl
421a83:	75 13                	jne    0x421a98
421a85:	8b 45 10             	mov    0x10(%ebp),%eax
421a88:	85 c0                	test   %eax,%eax
421a8a:	74 08                	je     0x421a94
421a8c:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
421a92:	89 08                	mov    %ecx,(%eax)
421a94:	33 c0                	xor    %eax,%eax
421a96:	eb 65                	jmp    0x421afd
421a98:	8b 75 fc             	mov    -0x4(%ebp),%esi
421a9b:	56                   	push   %esi
421a9c:	53                   	push   %ebx
421a9d:	e8 b0 f7 ff ff       	call   0x421252
421aa2:	59                   	pop    %ecx
421aa3:	59                   	pop    %ecx
421aa4:	84 c0                	test   %al,%al
421aa6:	74 40                	je     0x421ae8
421aa8:	8b 45 08             	mov    0x8(%ebp),%eax
421aab:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
421aaf:	c7 40 18 22 00 00 00 	movl   $0x22,0x18(%eax)
421ab6:	f6 c3 01             	test   $0x1,%bl
421ab9:	75 05                	jne    0x421ac0
421abb:	83 ce ff             	or     $0xffffffff,%esi
421abe:	eb 2f                	jmp    0x421aef
421ac0:	8b 4d 10             	mov    0x10(%ebp),%ecx
421ac3:	f6 c3 02             	test   $0x2,%bl
421ac6:	74 10                	je     0x421ad8
421ac8:	85 c9                	test   %ecx,%ecx
421aca:	74 05                	je     0x421ad1
421acc:	8b 45 0c             	mov    0xc(%ebp),%eax
421acf:	89 01                	mov    %eax,(%ecx)
421ad1:	b8 00 00 00 80       	mov    $0x80000000,%eax
421ad6:	eb 25                	jmp    0x421afd
421ad8:	85 c9                	test   %ecx,%ecx
421ada:	74 05                	je     0x421ae1
421adc:	8b 45 0c             	mov    0xc(%ebp),%eax
421adf:	89 01                	mov    %eax,(%ecx)
421ae1:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
421ae6:	eb 15                	jmp    0x421afd
421ae8:	f6 c3 02             	test   $0x2,%bl
421aeb:	74 02                	je     0x421aef
421aed:	f7 de                	neg    %esi
421aef:	8b 55 10             	mov    0x10(%ebp),%edx
421af2:	85 d2                	test   %edx,%edx
421af4:	74 05                	je     0x421afb
421af6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
421af9:	89 0a                	mov    %ecx,(%edx)
421afb:	8b c6                	mov    %esi,%eax
421afd:	5f                   	pop    %edi
421afe:	5e                   	pop    %esi
421aff:	5b                   	pop    %ebx
421b00:	c9                   	leave
421b01:	c3                   	ret
421b02:	8b ff                	mov    %edi,%edi
421b04:	56                   	push   %esi
421b05:	8b f1                	mov    %ecx,%esi
421b07:	57                   	push   %edi
421b08:	8b be 04 04 00 00    	mov    0x404(%esi),%edi
421b0e:	e8 0b f6 ff ff       	call   0x42111e
421b13:	85 ff                	test   %edi,%edi
421b15:	75 04                	jne    0x421b1b
421b17:	03 c6                	add    %esi,%eax
421b19:	eb 02                	jmp    0x421b1d
421b1b:	03 c7                	add    %edi,%eax
421b1d:	5f                   	pop    %edi
421b1e:	5e                   	pop    %esi
421b1f:	c3                   	ret
421b20:	8b ff                	mov    %edi,%edi
421b22:	55                   	push   %ebp
421b23:	8b ec                	mov    %esp,%ebp
421b25:	83 ec 0c             	sub    $0xc,%esp
421b28:	53                   	push   %ebx
421b29:	56                   	push   %esi
421b2a:	8b f1                	mov    %ecx,%esi
421b2c:	57                   	push   %edi
421b2d:	ff 76 28             	push   0x28(%esi)
421b30:	e8 5d 22 00 00       	call   0x423d92
421b35:	59                   	pop    %ecx
421b36:	8b c8                	mov    %eax,%ecx
421b38:	89 45 f4             	mov    %eax,-0xc(%ebp)
421b3b:	6a 00                	push   $0x0
421b3d:	5b                   	pop    %ebx
421b3e:	83 e9 01             	sub    $0x1,%ecx
421b41:	0f 84 99 00 00 00    	je     0x421be0
421b47:	83 e9 01             	sub    $0x1,%ecx
421b4a:	74 75                	je     0x421bc1
421b4c:	49                   	dec    %ecx
421b4d:	83 e9 01             	sub    $0x1,%ecx
421b50:	74 46                	je     0x421b98
421b52:	83 e9 04             	sub    $0x4,%ecx
421b55:	74 27                	je     0x421b7e
421b57:	8b 46 08             	mov    0x8(%esi),%eax
421b5a:	83 c0 18             	add    $0x18,%eax
421b5d:	c6 40 04 01          	movb   $0x1,0x4(%eax)
421b61:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
421b67:	ff 76 08             	push   0x8(%esi)
421b6a:	53                   	push   %ebx
421b6b:	53                   	push   %ebx
421b6c:	53                   	push   %ebx
421b6d:	53                   	push   %ebx
421b6e:	53                   	push   %ebx
421b6f:	e8 7e ee ff ff       	call   0x4209f2
421b74:	83 c4 18             	add    $0x18,%esp
421b77:	32 c0                	xor    %al,%al
421b79:	e9 28 01 00 00       	jmp    0x421ca6
421b7e:	8b 4e 10             	mov    0x10(%esi),%ecx
421b81:	8b 7e 1c             	mov    0x1c(%esi),%edi
421b84:	8b c7                	mov    %edi,%eax
421b86:	c1 e8 04             	shr    $0x4,%eax
421b89:	a8 01                	test   $0x1,%al
421b8b:	8d 41 08             	lea    0x8(%ecx),%eax
421b8e:	89 46 10             	mov    %eax,0x10(%esi)
421b91:	8b 01                	mov    (%ecx),%eax
421b93:	8b 51 04             	mov    0x4(%ecx),%edx
421b96:	eb 66                	jmp    0x421bfe
421b98:	8b 7e 1c             	mov    0x1c(%esi),%edi
421b9b:	8b c7                	mov    %edi,%eax
421b9d:	c1 e8 04             	shr    $0x4,%eax
421ba0:	a8 01                	test   $0x1,%al
421ba2:	74 0d                	je     0x421bb1
421ba4:	8b 46 10             	mov    0x10(%esi),%eax
421ba7:	8d 48 04             	lea    0x4(%eax),%ecx
421baa:	89 4e 10             	mov    %ecx,0x10(%esi)
421bad:	8b 00                	mov    (%eax),%eax
421baf:	eb 4c                	jmp    0x421bfd
421bb1:	8b 4e 10             	mov    0x10(%esi),%ecx
421bb4:	89 5d f8             	mov    %ebx,-0x8(%ebp)
421bb7:	8d 41 04             	lea    0x4(%ecx),%eax
421bba:	89 46 10             	mov    %eax,0x10(%esi)
421bbd:	8b 01                	mov    (%ecx),%eax
421bbf:	eb 40                	jmp    0x421c01
421bc1:	8b 7e 1c             	mov    0x1c(%esi),%edi
421bc4:	8b c7                	mov    %edi,%eax
421bc6:	8b 4e 10             	mov    0x10(%esi),%ecx
421bc9:	c1 e8 04             	shr    $0x4,%eax
421bcc:	a8 01                	test   $0x1,%al
421bce:	8d 41 04             	lea    0x4(%ecx),%eax
421bd1:	89 46 10             	mov    %eax,0x10(%esi)
421bd4:	74 05                	je     0x421bdb
421bd6:	0f bf 01             	movswl (%ecx),%eax
421bd9:	eb 22                	jmp    0x421bfd
421bdb:	0f b7 01             	movzwl (%ecx),%eax
421bde:	eb 1d                	jmp    0x421bfd
421be0:	8b 7e 1c             	mov    0x1c(%esi),%edi
421be3:	8b c7                	mov    %edi,%eax
421be5:	8b 4e 10             	mov    0x10(%esi),%ecx
421be8:	c1 e8 04             	shr    $0x4,%eax
421beb:	a8 01                	test   $0x1,%al
421bed:	8d 41 04             	lea    0x4(%ecx),%eax
421bf0:	89 46 10             	mov    %eax,0x10(%esi)
421bf3:	74 05                	je     0x421bfa
421bf5:	0f be 01             	movsbl (%ecx),%eax
421bf8:	eb 03                	jmp    0x421bfd
421bfa:	0f b6 01             	movzbl (%ecx),%eax
421bfd:	99                   	cltd
421bfe:	89 55 f8             	mov    %edx,-0x8(%ebp)
421c01:	8b 55 f8             	mov    -0x8(%ebp),%edx
421c04:	89 45 fc             	mov    %eax,-0x4(%ebp)
421c07:	8b c7                	mov    %edi,%eax
421c09:	8b 4d fc             	mov    -0x4(%ebp),%ecx
421c0c:	c1 e8 04             	shr    $0x4,%eax
421c0f:	a8 01                	test   $0x1,%al
421c11:	74 16                	je     0x421c29
421c13:	3b d3                	cmp    %ebx,%edx
421c15:	7f 12                	jg     0x421c29
421c17:	7c 04                	jl     0x421c1d
421c19:	3b cb                	cmp    %ebx,%ecx
421c1b:	73 0c                	jae    0x421c29
421c1d:	f7 d9                	neg    %ecx
421c1f:	13 d3                	adc    %ebx,%edx
421c21:	f7 da                	neg    %edx
421c23:	83 cf 40             	or     $0x40,%edi
421c26:	89 7e 1c             	mov    %edi,0x1c(%esi)
421c29:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
421c2d:	89 55 f8             	mov    %edx,-0x8(%ebp)
421c30:	89 4d fc             	mov    %ecx,-0x4(%ebp)
421c33:	7d 09                	jge    0x421c3e
421c35:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
421c3c:	eb 1a                	jmp    0x421c58
421c3e:	ff 76 08             	push   0x8(%esi)
421c41:	83 e7 f7             	and    $0xfffffff7,%edi
421c44:	8d 4e 3c             	lea    0x3c(%esi),%ecx
421c47:	ff 76 24             	push   0x24(%esi)
421c4a:	89 7e 1c             	mov    %edi,0x1c(%esi)
421c4d:	e8 fd f4 ff ff       	call   0x42114f
421c52:	8b 4d fc             	mov    -0x4(%ebp),%ecx
421c55:	8b 55 f8             	mov    -0x8(%ebp),%edx
421c58:	8b c1                	mov    %ecx,%eax
421c5a:	0b c2                	or     %edx,%eax
421c5c:	75 04                	jne    0x421c62
421c5e:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
421c62:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
421c66:	ff 75 08             	push   0x8(%ebp)
421c69:	88 5e 38             	mov    %bl,0x38(%esi)
421c6c:	75 0b                	jne    0x421c79
421c6e:	52                   	push   %edx
421c6f:	51                   	push   %ecx
421c70:	8b ce                	mov    %esi,%ecx
421c72:	e8 06 0b 00 00       	call   0x42277d
421c77:	eb 08                	jmp    0x421c81
421c79:	51                   	push   %ecx
421c7a:	8b ce                	mov    %esi,%ecx
421c7c:	e8 fc 07 00 00       	call   0x42247d
421c81:	8b 46 1c             	mov    0x1c(%esi),%eax
421c84:	c1 e8 07             	shr    $0x7,%eax
421c87:	a8 01                	test   $0x1,%al
421c89:	74 19                	je     0x421ca4
421c8b:	39 5e 34             	cmp    %ebx,0x34(%esi)
421c8e:	74 08                	je     0x421c98
421c90:	8b 46 30             	mov    0x30(%esi),%eax
421c93:	80 38 30             	cmpb   $0x30,(%eax)
421c96:	74 0c                	je     0x421ca4
421c98:	ff 4e 30             	decl   0x30(%esi)
421c9b:	8b 4e 30             	mov    0x30(%esi),%ecx
421c9e:	c6 01 30             	movb   $0x30,(%ecx)
421ca1:	ff 46 34             	incl   0x34(%esi)
421ca4:	b0 01                	mov    $0x1,%al
421ca6:	5f                   	pop    %edi
421ca7:	5e                   	pop    %esi
421ca8:	5b                   	pop    %ebx
421ca9:	c9                   	leave
421caa:	c2 04 00             	ret    $0x4
421cad:	8b ff                	mov    %edi,%edi
421caf:	55                   	push   %ebp
421cb0:	8b ec                	mov    %esp,%ebp
421cb2:	83 ec 0c             	sub    $0xc,%esp
421cb5:	53                   	push   %ebx
421cb6:	56                   	push   %esi
421cb7:	8b f1                	mov    %ecx,%esi
421cb9:	57                   	push   %edi
421cba:	ff 76 28             	push   0x28(%esi)
421cbd:	e8 d0 20 00 00       	call   0x423d92
421cc2:	59                   	pop    %ecx
421cc3:	8b c8                	mov    %eax,%ecx
421cc5:	89 45 f4             	mov    %eax,-0xc(%ebp)
421cc8:	6a 00                	push   $0x0
421cca:	5b                   	pop    %ebx
421ccb:	83 e9 01             	sub    $0x1,%ecx
421cce:	0f 84 99 00 00 00    	je     0x421d6d
421cd4:	83 e9 01             	sub    $0x1,%ecx
421cd7:	74 75                	je     0x421d4e
421cd9:	49                   	dec    %ecx
421cda:	83 e9 01             	sub    $0x1,%ecx
421cdd:	74 46                	je     0x421d25
421cdf:	83 e9 04             	sub    $0x4,%ecx
421ce2:	74 27                	je     0x421d0b
421ce4:	8b 46 08             	mov    0x8(%esi),%eax
421ce7:	83 c0 18             	add    $0x18,%eax
421cea:	c6 40 04 01          	movb   $0x1,0x4(%eax)
421cee:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
421cf4:	ff 76 08             	push   0x8(%esi)
421cf7:	53                   	push   %ebx
421cf8:	53                   	push   %ebx
421cf9:	53                   	push   %ebx
421cfa:	53                   	push   %ebx
421cfb:	53                   	push   %ebx
421cfc:	e8 f1 ec ff ff       	call   0x4209f2
421d01:	83 c4 18             	add    $0x18,%esp
421d04:	32 c0                	xor    %al,%al
421d06:	e9 2d 01 00 00       	jmp    0x421e38
421d0b:	8b 4e 10             	mov    0x10(%esi),%ecx
421d0e:	8b 7e 1c             	mov    0x1c(%esi),%edi
421d11:	8b c7                	mov    %edi,%eax
421d13:	c1 e8 04             	shr    $0x4,%eax
421d16:	a8 01                	test   $0x1,%al
421d18:	8d 41 08             	lea    0x8(%ecx),%eax
421d1b:	89 46 10             	mov    %eax,0x10(%esi)
421d1e:	8b 01                	mov    (%ecx),%eax
421d20:	8b 51 04             	mov    0x4(%ecx),%edx
421d23:	eb 66                	jmp    0x421d8b
421d25:	8b 7e 1c             	mov    0x1c(%esi),%edi
421d28:	8b c7                	mov    %edi,%eax
421d2a:	c1 e8 04             	shr    $0x4,%eax
421d2d:	a8 01                	test   $0x1,%al
421d2f:	74 0d                	je     0x421d3e
421d31:	8b 46 10             	mov    0x10(%esi),%eax
421d34:	8d 48 04             	lea    0x4(%eax),%ecx
421d37:	89 4e 10             	mov    %ecx,0x10(%esi)
421d3a:	8b 00                	mov    (%eax),%eax
421d3c:	eb 4c                	jmp    0x421d8a
421d3e:	8b 4e 10             	mov    0x10(%esi),%ecx
421d41:	89 5d f8             	mov    %ebx,-0x8(%ebp)
421d44:	8d 41 04             	lea    0x4(%ecx),%eax
421d47:	89 46 10             	mov    %eax,0x10(%esi)
421d4a:	8b 01                	mov    (%ecx),%eax
421d4c:	eb 40                	jmp    0x421d8e
421d4e:	8b 7e 1c             	mov    0x1c(%esi),%edi
421d51:	8b c7                	mov    %edi,%eax
421d53:	8b 4e 10             	mov    0x10(%esi),%ecx
421d56:	c1 e8 04             	shr    $0x4,%eax
421d59:	a8 01                	test   $0x1,%al
421d5b:	8d 41 04             	lea    0x4(%ecx),%eax
421d5e:	89 46 10             	mov    %eax,0x10(%esi)
421d61:	74 05                	je     0x421d68
421d63:	0f bf 01             	movswl (%ecx),%eax
421d66:	eb 22                	jmp    0x421d8a
421d68:	0f b7 01             	movzwl (%ecx),%eax
421d6b:	eb 1d                	jmp    0x421d8a
421d6d:	8b 7e 1c             	mov    0x1c(%esi),%edi
421d70:	8b c7                	mov    %edi,%eax
421d72:	8b 4e 10             	mov    0x10(%esi),%ecx
421d75:	c1 e8 04             	shr    $0x4,%eax
421d78:	a8 01                	test   $0x1,%al
421d7a:	8d 41 04             	lea    0x4(%ecx),%eax
421d7d:	89 46 10             	mov    %eax,0x10(%esi)
421d80:	74 05                	je     0x421d87
421d82:	0f be 01             	movsbl (%ecx),%eax
421d85:	eb 03                	jmp    0x421d8a
421d87:	0f b6 01             	movzbl (%ecx),%eax
421d8a:	99                   	cltd
421d8b:	89 55 f8             	mov    %edx,-0x8(%ebp)
421d8e:	8b 55 f8             	mov    -0x8(%ebp),%edx
421d91:	89 45 fc             	mov    %eax,-0x4(%ebp)
421d94:	8b c7                	mov    %edi,%eax
421d96:	8b 4d fc             	mov    -0x4(%ebp),%ecx
421d99:	c1 e8 04             	shr    $0x4,%eax
421d9c:	a8 01                	test   $0x1,%al
421d9e:	74 16                	je     0x421db6
421da0:	3b d3                	cmp    %ebx,%edx
421da2:	7f 12                	jg     0x421db6
421da4:	7c 04                	jl     0x421daa
421da6:	3b cb                	cmp    %ebx,%ecx
421da8:	73 0c                	jae    0x421db6
421daa:	f7 d9                	neg    %ecx
421dac:	13 d3                	adc    %ebx,%edx
421dae:	f7 da                	neg    %edx