422ac2:	8b 56 1c             	mov    0x1c(%esi),%edx
422ac5:	89 02                	mov    %eax,(%edx)
422ac7:	8b 45 f8             	mov    -0x8(%ebp),%eax
422aca:	2b 45 18             	sub    0x18(%ebp),%eax
422acd:	d1 f8                	sar    $1,%eax
422acf:	89 45 f8             	mov    %eax,-0x8(%ebp)
422ad2:	8b 46 2c             	mov    0x2c(%esi),%eax
422ad5:	8b 55 f8             	mov    -0x8(%ebp),%edx
422ad8:	89 10                	mov    %edx,(%eax)
422ada:	8b 55 f4             	mov    -0xc(%ebp),%edx
422add:	f6 c3 02             	test   $0x2,%bl
422ae0:	74 27                	je     0x422b09
422ae2:	85 c9                	test   %ecx,%ecx
422ae4:	74 23                	je     0x422b09
422ae6:	8b 46 30             	mov    0x30(%esi),%eax
422ae9:	8b 08                	mov    (%eax),%ecx
422aeb:	8b 46 20             	mov    0x20(%esi),%eax
422aee:	8b 00                	mov    (%eax),%eax
422af0:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
422af3:	8b 46 10             	mov    0x10(%esi),%eax
422af6:	89 10                	mov    %edx,(%eax)
422af8:	8b 46 20             	mov    0x20(%esi),%eax
422afb:	8b 55 18             	mov    0x18(%ebp),%edx
422afe:	2b ca                	sub    %edx,%ecx
422b00:	d1 f9                	sar    $1,%ecx
422b02:	89 10                	mov    %edx,(%eax)
422b04:	8b 46 30             	mov    0x30(%esi),%eax
422b07:	89 08                	mov    %ecx,(%eax)
422b09:	8b 45 08             	mov    0x8(%ebp),%eax
422b0c:	8b 4d 14             	mov    0x14(%ebp),%ecx
422b0f:	89 38                	mov    %edi,(%eax)
422b11:	89 48 04             	mov    %ecx,0x4(%eax)
422b14:	33 c9                	xor    %ecx,%ecx
422b16:	5f                   	pop    %edi
422b17:	89 48 08             	mov    %ecx,0x8(%eax)
422b1a:	89 48 0c             	mov    %ecx,0xc(%eax)
422b1d:	5e                   	pop    %esi
422b1e:	89 48 10             	mov    %ecx,0x10(%eax)
422b21:	89 48 14             	mov    %ecx,0x14(%eax)
422b24:	5b                   	pop    %ebx
422b25:	c9                   	leave
422b26:	c2 14 00             	ret    $0x14
422b29:	55                   	push   %ebp
422b2a:	8b ec                	mov    %esp,%ebp
422b2c:	8b 45 08             	mov    0x8(%ebp),%eax
422b2f:	83 08 ff             	orl    $0xffffffff,(%eax)
422b32:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
422b36:	33 c9                	xor    %ecx,%ecx
422b38:	89 48 08             	mov    %ecx,0x8(%eax)
422b3b:	89 48 0c             	mov    %ecx,0xc(%eax)
422b3e:	89 48 10             	mov    %ecx,0x10(%eax)
422b41:	89 48 14             	mov    %ecx,0x14(%eax)
422b44:	5d                   	pop    %ebp
422b45:	c2 20 00             	ret    $0x20
422b48:	55                   	push   %ebp
422b49:	8b ec                	mov    %esp,%ebp
422b4b:	83 ec 10             	sub    $0x10,%esp
422b4e:	8b 45 18             	mov    0x18(%ebp),%eax
422b51:	53                   	push   %ebx
422b52:	56                   	push   %esi
422b53:	57                   	push   %edi
422b54:	8b 7d 14             	mov    0x14(%ebp),%edi
422b57:	8b f1                	mov    %ecx,%esi
422b59:	03 7d 0c             	add    0xc(%ebp),%edi
422b5c:	13 45 10             	adc    0x10(%ebp),%eax
422b5f:	89 45 fc             	mov    %eax,-0x4(%ebp)
422b62:	8b 46 1c             	mov    0x1c(%esi),%eax
422b65:	8b 00                	mov    (%eax),%eax
422b67:	89 45 f8             	mov    %eax,-0x8(%ebp)
422b6a:	8b 46 20             	mov    0x20(%esi),%eax
422b6d:	8b 08                	mov    (%eax),%ecx
422b6f:	85 c9                	test   %ecx,%ecx
422b71:	74 08                	je     0x422b7b
422b73:	39 4e 38             	cmp    %ecx,0x38(%esi)
422b76:	73 03                	jae    0x422b7b
422b78:	89 4e 38             	mov    %ecx,0x38(%esi)
422b7b:	8b 46 0c             	mov    0xc(%esi),%eax
422b7e:	8b 5e 38             	mov    0x38(%esi),%ebx
422b81:	8b 10                	mov    (%eax),%edx
422b83:	8b c3                	mov    %ebx,%eax
422b85:	2b c2                	sub    %edx,%eax
422b87:	89 55 f4             	mov    %edx,-0xc(%ebp)
422b8a:	d1 f8                	sar    $1,%eax
422b8c:	99                   	cltd
422b8d:	39 55 fc             	cmp    %edx,-0x4(%ebp)
422b90:	72 12                	jb     0x422ba4
422b92:	77 04                	ja     0x422b98
422b94:	3b f8                	cmp    %eax,%edi
422b96:	76 0c                	jbe    0x422ba4
422b98:	8b 45 08             	mov    0x8(%ebp),%eax
422b9b:	83 08 ff             	orl    $0xffffffff,(%eax)
422b9e:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
422ba2:	eb 7a                	jmp    0x422c1e
422ba4:	8b 55 24             	mov    0x24(%ebp),%edx
422ba7:	8b c7                	mov    %edi,%eax
422ba9:	0b 45 fc             	or     -0x4(%ebp),%eax
422bac:	74 14                	je     0x422bc2
422bae:	f6 c2 01             	test   $0x1,%dl
422bb1:	74 06                	je     0x422bb9
422bb3:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
422bb7:	74 df                	je     0x422b98
422bb9:	f6 c2 02             	test   $0x2,%dl
422bbc:	74 04                	je     0x422bc2
422bbe:	85 c9                	test   %ecx,%ecx
422bc0:	74 d6                	je     0x422b98
422bc2:	8b 45 f4             	mov    -0xc(%ebp),%eax
422bc5:	8d 04 78             	lea    (%eax,%edi,2),%eax
422bc8:	f6 c2 01             	test   $0x1,%dl
422bcb:	74 17                	je     0x422be4
422bcd:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
422bd1:	74 11                	je     0x422be4
422bd3:	8b 56 1c             	mov    0x1c(%esi),%edx
422bd6:	2b d8                	sub    %eax,%ebx
422bd8:	d1 fb                	sar    $1,%ebx
422bda:	89 02                	mov    %eax,(%edx)
422bdc:	8b 46 2c             	mov    0x2c(%esi),%eax
422bdf:	8b 55 24             	mov    0x24(%ebp),%edx
422be2:	89 18                	mov    %ebx,(%eax)
422be4:	f6 c2 02             	test   $0x2,%dl
422be7:	74 2a                	je     0x422c13
422be9:	85 c9                	test   %ecx,%ecx
422beb:	74 26                	je     0x422c13
422bed:	8b 46 30             	mov    0x30(%esi),%eax
422bf0:	8b 5d f4             	mov    -0xc(%ebp),%ebx
422bf3:	8b 08                	mov    (%eax),%ecx
422bf5:	8b 46 20             	mov    0x20(%esi),%eax
422bf8:	8d 14 7b             	lea    (%ebx,%edi,2),%edx
422bfb:	8b 00                	mov    (%eax),%eax
422bfd:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
422c00:	8b 46 10             	mov    0x10(%esi),%eax
422c03:	2b ca                	sub    %edx,%ecx
422c05:	d1 f9                	sar    $1,%ecx
422c07:	89 18                	mov    %ebx,(%eax)
422c09:	8b 46 20             	mov    0x20(%esi),%eax
422c0c:	89 10                	mov    %edx,(%eax)
422c0e:	8b 46 30             	mov    0x30(%esi),%eax
422c11:	89 08                	mov    %ecx,(%eax)
422c13:	8b 45 08             	mov    0x8(%ebp),%eax
422c16:	8b 4d fc             	mov    -0x4(%ebp),%ecx
422c19:	89 38                	mov    %edi,(%eax)
422c1b:	89 48 04             	mov    %ecx,0x4(%eax)
422c1e:	33 c9                	xor    %ecx,%ecx
422c20:	5f                   	pop    %edi
422c21:	89 48 08             	mov    %ecx,0x8(%eax)
422c24:	89 48 0c             	mov    %ecx,0xc(%eax)
422c27:	5e                   	pop    %esi
422c28:	89 48 10             	mov    %ecx,0x10(%eax)
422c2b:	89 48 14             	mov    %ecx,0x14(%eax)
422c2e:	5b                   	pop    %ebx
422c2f:	c9                   	leave
422c30:	c2 20 00             	ret    $0x20
422c33:	8b c1                	mov    %ecx,%eax
422c35:	c2 0c 00             	ret    $0xc
422c38:	8b 41 1c             	mov    0x1c(%ecx),%eax
422c3b:	8b 10                	mov    (%eax),%edx
422c3d:	85 d2                	test   %edx,%edx
422c3f:	74 07                	je     0x422c48
422c41:	8b 41 2c             	mov    0x2c(%ecx),%eax
422c44:	8b 00                	mov    (%eax),%eax
422c46:	eb 02                	jmp    0x422c4a
422c48:	33 c0                	xor    %eax,%eax
422c4a:	85 c0                	test   %eax,%eax
422c4c:	7e 04                	jle    0x422c52
422c4e:	0f b7 02             	movzwl (%edx),%eax
422c51:	c3                   	ret
422c52:	8b 01                	mov    (%ecx),%eax
422c54:	ff 50 18             	call   *0x18(%eax)
422c57:	0f b7 c0             	movzwl %ax,%eax
422c5a:	c3                   	ret
422c5b:	6a 04                	push   $0x4
422c5d:	b8 cd 01 49 00       	mov    $0x4901cd,%eax
422c62:	e8 e3 cd 01 00       	call   0x43fa4a
422c67:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
422c6b:	51                   	push   %ecx
422c6c:	8b 4d 08             	mov    0x8(%ebp),%ecx
422c6f:	e8 a6 eb fd ff       	call   0x40181a
422c74:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
422c78:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
422c7f:	8b 45 08             	mov    0x8(%ebp),%eax
422c82:	e8 8c cd 01 00       	call   0x43fa13
422c87:	c2 04 00             	ret    $0x4
422c8a:	33 c0                	xor    %eax,%eax
422c8c:	33 d2                	xor    %edx,%edx
422c8e:	c3                   	ret
422c8f:	56                   	push   %esi
422c90:	8b f1                	mov    %ecx,%esi
422c92:	33 c9                	xor    %ecx,%ecx
422c94:	8b 46 1c             	mov    0x1c(%esi),%eax
422c97:	39 08                	cmp    %ecx,(%eax)
422c99:	74 05                	je     0x422ca0
422c9b:	8b 46 2c             	mov    0x2c(%esi),%eax
422c9e:	8b 08                	mov    (%eax),%ecx
422ca0:	83 f9 01             	cmp    $0x1,%ecx
422ca3:	7e 14                	jle    0x422cb9
422ca5:	8b 46 2c             	mov    0x2c(%esi),%eax
422ca8:	ff 08                	decl   (%eax)
422caa:	8b 46 1c             	mov    0x1c(%esi),%eax
422cad:	8b 08                	mov    (%eax),%ecx
422caf:	83 c1 02             	add    $0x2,%ecx
422cb2:	89 08                	mov    %ecx,(%eax)
422cb4:	0f b7 09             	movzwl (%ecx),%ecx
422cb7:	eb 1b                	jmp    0x422cd4
422cb9:	8b ce                	mov    %esi,%ecx
422cbb:	e8 c8 fc ff ff       	call   0x422988
422cc0:	b9 ff ff 00 00       	mov    $0xffff,%ecx
422cc5:	66 3b c8             	cmp    %ax,%cx
422cc8:	74 0a                	je     0x422cd4
422cca:	8b ce                	mov    %esi,%ecx
422ccc:	e8 67 ff ff ff       	call   0x422c38
422cd1:	0f b7 c8             	movzwl %ax,%ecx
422cd4:	66 8b c1             	mov    %cx,%ax
422cd7:	5e                   	pop    %esi
422cd8:	c3                   	ret
422cd9:	55                   	push   %ebp
422cda:	8b ec                	mov    %esp,%ebp
422cdc:	8b 41 20             	mov    0x20(%ecx),%eax
422cdf:	33 d2                	xor    %edx,%edx
422ce1:	39 10                	cmp    %edx,(%eax)
422ce3:	74 05                	je     0x422cea
422ce5:	8b 41 30             	mov    0x30(%ecx),%eax
422ce8:	8b 10                	mov    (%eax),%edx
422cea:	85 d2                	test   %edx,%edx
422cec:	7e 17                	jle    0x422d05
422cee:	8b 41 30             	mov    0x30(%ecx),%eax
422cf1:	ff 08                	decl   (%eax)
422cf3:	8b 49 20             	mov    0x20(%ecx),%ecx
422cf6:	8b 11                	mov    (%ecx),%edx
422cf8:	8d 42 02             	lea    0x2(%edx),%eax
422cfb:	89 01                	mov    %eax,(%ecx)
422cfd:	8b 45 08             	mov    0x8(%ebp),%eax
422d00:	66 89 02             	mov    %ax,(%edx)
422d03:	eb 08                	jmp    0x422d0d
422d05:	8b 01                	mov    (%ecx),%eax
422d07:	ff 75 08             	push   0x8(%ebp)
422d0a:	ff 50 0c             	call   *0xc(%eax)
422d0d:	0f b7 c0             	movzwl %ax,%eax
422d10:	5d                   	pop    %ebp
422d11:	c2 04 00             	ret    $0x4
422d14:	6a 04                	push   $0x4
422d16:	b8 01 02 49 00       	mov    $0x490201,%eax
422d1b:	e8 2a cd 01 00       	call   0x43fa4a
422d20:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
422d24:	8b 41 04             	mov    0x4(%ecx),%eax
422d27:	8b 4d 08             	mov    0x8(%ebp),%ecx
422d2a:	ff 70 08             	push   0x8(%eax)
422d2d:	ff 70 04             	push   0x4(%eax)
422d30:	e8 b4 85 fe ff       	call   0x40b2e9
422d35:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
422d39:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
422d40:	8b 45 08             	mov    0x8(%ebp),%eax
422d43:	e8 cb cc 01 00       	call   0x43fa13
422d48:	c2 04 00             	ret    $0x4
422d4b:	6a 04                	push   $0x4
422d4d:	b8 35 02 49 00       	mov    $0x490235,%eax
422d52:	e8 f3 cc 01 00       	call   0x43fa4a
422d57:	8b f1                	mov    %ecx,%esi
422d59:	33 c9                	xor    %ecx,%ecx
422d5b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
422d5e:	33 c0                	xor    %eax,%eax
422d60:	89 4d f0             	mov    %ecx,-0x10(%ebp)
422d63:	8b 7d 08             	mov    0x8(%ebp),%edi
422d66:	89 4f 10             	mov    %ecx,0x10(%edi)
422d69:	c7 47 14 07 00 00 00 	movl   $0x7,0x14(%edi)
422d70:	66 89 07             	mov    %ax,(%edi)
422d73:	89 4d fc             	mov    %ecx,-0x4(%ebp)
422d76:	f6 46 3c 02          	testb  $0x2,0x3c(%esi)
422d7a:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
422d81:	75 1c                	jne    0x422d9f
422d83:	8b 46 20             	mov    0x20(%esi),%eax
422d86:	8b 08                	mov    (%eax),%ecx
422d88:	85 c9                	test   %ecx,%ecx
422d8a:	74 13                	je     0x422d9f
422d8c:	3b 4e 38             	cmp    0x38(%esi),%ecx
422d8f:	8b 46 10             	mov    0x10(%esi),%eax
422d92:	0f 42 4e 38          	cmovb  0x38(%esi),%ecx
422d96:	2b 08                	sub    (%eax),%ecx
422d98:	d1 f9                	sar    $1,%ecx
422d9a:	51                   	push   %ecx
422d9b:	ff 30                	push   (%eax)
422d9d:	eb 23                	jmp    0x422dc2
422d9f:	f6 46 3c 04          	testb  $0x4,0x3c(%esi)
422da3:	75 24                	jne    0x422dc9
422da5:	8b 46 1c             	mov    0x1c(%esi),%eax
422da8:	8b 18                	mov    (%eax),%ebx
422daa:	85 db                	test   %ebx,%ebx
422dac:	74 1b                	je     0x422dc9
422dae:	8b 46 0c             	mov    0xc(%esi),%eax
422db1:	8b 10                	mov    (%eax),%edx
422db3:	8b 46 2c             	mov    0x2c(%esi),%eax
422db6:	8b 08                	mov    (%eax),%ecx
422db8:	03 c9                	add    %ecx,%ecx
422dba:	2b ca                	sub    %edx,%ecx
422dbc:	03 cb                	add    %ebx,%ecx
422dbe:	d1 f9                	sar    $1,%ecx
422dc0:	51                   	push   %ecx
422dc1:	52                   	push   %edx
422dc2:	8b cf                	mov    %edi,%ecx
422dc4:	e8 da ca ff ff       	call   0x41f8a3
422dc9:	8b c7                	mov    %edi,%eax
422dcb:	e8 43 cc 01 00       	call   0x43fa13
422dd0:	c2 04 00             	ret    $0x4
422dd3:	6a 04                	push   $0x4
422dd5:	b8 69 02 49 00       	mov    $0x490269,%eax
422dda:	e8 6b cc 01 00       	call   0x43fa4a
422ddf:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
422de3:	83 c1 18             	add    $0x18,%ecx
422de6:	ff 75 08             	push   0x8(%ebp)
422de9:	e8 5d ff ff ff       	call   0x422d4b
422dee:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
422df2:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
422df9:	8b 45 08             	mov    0x8(%ebp),%eax
422dfc:	e8 12 cc 01 00       	call   0x43fa13
422e01:	c2 04 00             	ret    $0x4
422e04:	6a 10                	push   $0x10
422e06:	b8 9d 02 49 00       	mov    $0x49029d,%eax
422e0b:	e8 3a cc 01 00       	call   0x43fa4a
422e10:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
422e14:	8d 45 e4             	lea    -0x1c(%ebp),%eax
422e17:	50                   	push   %eax
422e18:	e8 75 65 ff ff       	call   0x419392
422e1d:	8b 4d 08             	mov    0x8(%ebp),%ecx
422e20:	8d 45 f3             	lea    -0xd(%ebp),%eax
422e23:	50                   	push   %eax
422e24:	ff 75 e8             	push   -0x18(%ebp)
422e27:	ff 75 e4             	push   -0x1c(%ebp)
422e2a:	e8 bc e8 fd ff       	call   0x4016eb
422e2f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
422e33:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
422e3a:	8b 45 08             	mov    0x8(%ebp),%eax
422e3d:	e8 d1 cb 01 00       	call   0x43fa13
422e42:	c2 04 00             	ret    $0x4
422e45:	6a 04                	push   $0x4
422e47:	b8 d1 02 49 00       	mov    $0x4902d1,%eax
422e4c:	e8 f9 cb 01 00       	call   0x43fa4a
422e51:	ff 75 10             	push   0x10(%ebp)
422e54:	33 db                	xor    %ebx,%ebx
422e56:	ff 75 0c             	push   0xc(%ebp)
422e59:	89 5d f0             	mov    %ebx,-0x10(%ebp)
422e5c:	8b 75 08             	mov    0x8(%ebp),%esi
422e5f:	51                   	push   %ecx
422e60:	8b ce                	mov    %esi,%ecx
422e62:	89 5e 10             	mov    %ebx,0x10(%esi)
422e65:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
422e6c:	88 1e                	mov    %bl,(%esi)
422e6e:	e8 8e c8 ff ff       	call   0x41f701
422e73:	89 5d fc             	mov    %ebx,-0x4(%ebp)
422e76:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
422e7d:	8b c6                	mov    %esi,%eax
422e7f:	e8 8f cb 01 00       	call   0x43fa13
422e84:	c2 0c 00             	ret    $0xc