42291c:	8d 4d f0             	lea    -0x10(%ebp),%ecx
42291f:	8b 38                	mov    (%eax),%edi
422921:	8b 70 04             	mov    0x4(%eax),%esi
422924:	8b 45 fc             	mov    -0x4(%ebp),%eax
422927:	8b 00                	mov    (%eax),%eax
422929:	89 45 f0             	mov    %eax,-0x10(%ebp)
42292c:	8d 45 e0             	lea    -0x20(%ebp),%eax
42292f:	50                   	push   %eax
422930:	e8 bb d6 fe ff       	call   0x40fff0
422935:	8b 4d fc             	mov    -0x4(%ebp),%ecx
422938:	56                   	push   %esi
422939:	57                   	push   %edi
42293a:	ff 70 04             	push   0x4(%eax)
42293d:	ff 30                	push   (%eax)
42293f:	8d 45 f0             	lea    -0x10(%ebp),%eax
422942:	50                   	push   %eax
422943:	e8 19 e4 ff ff       	call   0x420d61
422948:	5f                   	pop    %edi
422949:	5e                   	pop    %esi
42294a:	c9                   	leave
42294b:	c2 08 00             	ret    $0x8
42294e:	55                   	push   %ebp
42294f:	8b ec                	mov    %esp,%ebp
422951:	8b 55 08             	mov    0x8(%ebp),%edx
422954:	56                   	push   %esi
422955:	8d 72 02             	lea    0x2(%edx),%esi
422958:	66 8b 02             	mov    (%edx),%ax
42295b:	83 c2 02             	add    $0x2,%edx
42295e:	66 85 c0             	test   %ax,%ax
422961:	75 f5                	jne    0x422958
422963:	8b 41 10             	mov    0x10(%ecx),%eax
422966:	2b d6                	sub    %esi,%edx
422968:	d1 fa                	sar    $1,%edx
42296a:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
42296e:	5e                   	pop    %esi
42296f:	72 02                	jb     0x422973
422971:	8b 09                	mov    (%ecx),%ecx
422973:	52                   	push   %edx
422974:	ff 75 08             	push   0x8(%ebp)
422977:	ff 75 0c             	push   0xc(%ebp)
42297a:	50                   	push   %eax
42297b:	51                   	push   %ecx
42297c:	e8 55 38 fe ff       	call   0x4061d6
422981:	83 c4 14             	add    $0x14,%esp
422984:	5d                   	pop    %ebp
422985:	c2 08 00             	ret    $0x8
422988:	8b 41 1c             	mov    0x1c(%ecx),%eax
42298b:	33 d2                	xor    %edx,%edx
42298d:	39 10                	cmp    %edx,(%eax)
42298f:	74 05                	je     0x422996
422991:	8b 41 2c             	mov    0x2c(%ecx),%eax
422994:	8b 10                	mov    (%eax),%edx
422996:	85 d2                	test   %edx,%edx
422998:	7e 13                	jle    0x4229ad
42299a:	8b 41 2c             	mov    0x2c(%ecx),%eax
42299d:	ff 08                	decl   (%eax)
42299f:	8b 49 1c             	mov    0x1c(%ecx),%ecx
4229a2:	8b 11                	mov    (%ecx),%edx
4229a4:	8d 42 02             	lea    0x2(%edx),%eax
4229a7:	89 01                	mov    %eax,(%ecx)
4229a9:	0f b7 02             	movzwl (%edx),%eax
4229ac:	c3                   	ret
4229ad:	8b 01                	mov    (%ecx),%eax
4229af:	ff 50 1c             	call   *0x1c(%eax)
4229b2:	0f b7 c0             	movzwl %ax,%eax
4229b5:	c3                   	ret
4229b6:	55                   	push   %ebp
4229b7:	8b ec                	mov    %esp,%ebp
4229b9:	8b 45 08             	mov    0x8(%ebp),%eax
4229bc:	83 08 ff             	orl    $0xffffffff,(%eax)
4229bf:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
4229c3:	33 c9                	xor    %ecx,%ecx
4229c5:	89 48 08             	mov    %ecx,0x8(%eax)
4229c8:	89 48 0c             	mov    %ecx,0xc(%eax)
4229cb:	89 48 10             	mov    %ecx,0x10(%eax)
4229ce:	89 48 14             	mov    %ecx,0x14(%eax)
4229d1:	5d                   	pop    %ebp
4229d2:	c2 14 00             	ret    $0x14
4229d5:	55                   	push   %ebp
4229d6:	8b ec                	mov    %esp,%ebp
4229d8:	83 ec 1c             	sub    $0x1c,%esp
4229db:	53                   	push   %ebx
4229dc:	56                   	push   %esi
4229dd:	8b f1                	mov    %ecx,%esi
4229df:	57                   	push   %edi
4229e0:	8b 46 1c             	mov    0x1c(%esi),%eax
4229e3:	8b 00                	mov    (%eax),%eax
4229e5:	89 45 fc             	mov    %eax,-0x4(%ebp)
4229e8:	8b 46 20             	mov    0x20(%esi),%eax
4229eb:	8b 08                	mov    (%eax),%ecx
4229ed:	85 c9                	test   %ecx,%ecx
4229ef:	74 08                	je     0x4229f9
4229f1:	39 4e 38             	cmp    %ecx,0x38(%esi)
4229f4:	73 03                	jae    0x4229f9
4229f6:	89 4e 38             	mov    %ecx,0x38(%esi)
4229f9:	8b 46 0c             	mov    0xc(%esi),%eax
4229fc:	8b 5d 18             	mov    0x18(%ebp),%ebx
4229ff:	8b 10                	mov    (%eax),%edx
422a01:	8b 46 38             	mov    0x38(%esi),%eax
422a04:	8b f8                	mov    %eax,%edi
422a06:	89 45 f8             	mov    %eax,-0x8(%ebp)
422a09:	2b fa                	sub    %edx,%edi
422a0b:	8b 45 14             	mov    0x14(%ebp),%eax
422a0e:	d1 ff                	sar    $1,%edi
422a10:	89 55 f4             	mov    %edx,-0xc(%ebp)
422a13:	89 7d f0             	mov    %edi,-0x10(%ebp)
422a16:	83 e8 00             	sub    $0x0,%eax
422a19:	74 52                	je     0x422a6d
422a1b:	83 e8 01             	sub    $0x1,%eax
422a1e:	74 0e                	je     0x422a2e
422a20:	83 e8 01             	sub    $0x1,%eax
422a23:	75 39                	jne    0x422a5e
422a25:	8b c7                	mov    %edi,%eax
422a27:	99                   	cltd
422a28:	8b f8                	mov    %eax,%edi
422a2a:	8b c2                	mov    %edx,%eax
422a2c:	eb 4d                	jmp    0x422a7b
422a2e:	8b c3                	mov    %ebx,%eax
422a30:	83 e0 03             	and    $0x3,%eax
422a33:	3c 03                	cmp    $0x3,%al
422a35:	74 27                	je     0x422a5e
422a37:	f6 c3 01             	test   $0x1,%bl
422a3a:	74 11                	je     0x422a4d
422a3c:	8b 45 fc             	mov    -0x4(%ebp),%eax
422a3f:	85 c0                	test   %eax,%eax
422a41:	75 04                	jne    0x422a47
422a43:	85 d2                	test   %edx,%edx
422a45:	75 17                	jne    0x422a5e
422a47:	2b c2                	sub    %edx,%eax
422a49:	d1 f8                	sar    $1,%eax
422a4b:	eb da                	jmp    0x422a27
422a4d:	f6 c3 02             	test   $0x2,%bl
422a50:	74 0c                	je     0x422a5e
422a52:	85 c9                	test   %ecx,%ecx
422a54:	75 04                	jne    0x422a5a
422a56:	85 d2                	test   %edx,%edx
422a58:	75 04                	jne    0x422a5e
422a5a:	8b c1                	mov    %ecx,%eax
422a5c:	eb e9                	jmp    0x422a47
422a5e:	8b 45 08             	mov    0x8(%ebp),%eax
422a61:	83 08 ff             	orl    $0xffffffff,(%eax)
422a64:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
422a68:	e9 a7 00 00 00       	jmp    0x422b14
422a6d:	0f 57 c0             	xorps  %xmm0,%xmm0
422a70:	66 0f 13 45 e4       	movlpd %xmm0,-0x1c(%ebp)
422a75:	8b 45 e8             	mov    -0x18(%ebp),%eax
422a78:	8b 7d e4             	mov    -0x1c(%ebp),%edi
422a7b:	03 7d 0c             	add    0xc(%ebp),%edi
422a7e:	13 45 10             	adc    0x10(%ebp),%eax
422a81:	89 45 14             	mov    %eax,0x14(%ebp)
422a84:	8b 45 f0             	mov    -0x10(%ebp),%eax
422a87:	99                   	cltd
422a88:	39 55 14             	cmp    %edx,0x14(%ebp)
422a8b:	72 06                	jb     0x422a93
422a8d:	77 cf                	ja     0x422a5e
422a8f:	3b f8                	cmp    %eax,%edi
422a91:	77 cb                	ja     0x422a5e
422a93:	8b c7                	mov    %edi,%eax
422a95:	0b 45 14             	or     0x14(%ebp),%eax
422a98:	74 14                	je     0x422aae
422a9a:	f6 c3 01             	test   $0x1,%bl
422a9d:	74 06                	je     0x422aa5
422a9f:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
422aa3:	74 b9                	je     0x422a5e
422aa5:	f6 c3 02             	test   $0x2,%bl
422aa8:	74 04                	je     0x422aae
422aaa:	85 c9                	test   %ecx,%ecx
422aac:	74 b0                	je     0x422a5e
422aae:	8b 55 f4             	mov    -0xc(%ebp),%edx
422ab1:	8d 04 7a             	lea    (%edx,%edi,2),%eax
422ab4:	89 45 18             	mov    %eax,0x18(%ebp)
422ab7:	f6 c3 01             	test   $0x1,%bl
422aba:	74 21                	je     0x422add
422abc:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
422ac0:	74 1b                	je     0x422add
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