40ac01:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40ac04:	8b 5f 04             	mov    0x4(%edi),%ebx
40ac07:	3b 5f 08             	cmp    0x8(%edi),%ebx
40ac0a:	75 48                	jne    0x40ac54
40ac0c:	83 f9 20             	cmp    $0x20,%ecx
40ac0f:	73 1f                	jae    0x40ac30
40ac11:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40ac16:	d3 eb                	shr    %cl,%ebx
40ac18:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ac1b:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40ac1f:	f7 d3                	not    %ebx
40ac21:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40ac25:	fe 09                	decb   (%ecx)
40ac27:	75 2b                	jne    0x40ac54
40ac29:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ac2c:	21 19                	and    %ebx,(%ecx)
40ac2e:	eb 24                	jmp    0x40ac54
40ac30:	83 c1 e0             	add    $0xffffffe0,%ecx
40ac33:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40ac38:	d3 eb                	shr    %cl,%ebx
40ac3a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ac3d:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40ac41:	f7 d3                	not    %ebx
40ac43:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
40ac4a:	fe 09                	decb   (%ecx)
40ac4c:	75 06                	jne    0x40ac54
40ac4e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ac51:	21 59 04             	and    %ebx,0x4(%ecx)
40ac54:	8b 4f 08             	mov    0x8(%edi),%ecx
40ac57:	8b 5f 04             	mov    0x4(%edi),%ebx
40ac5a:	89 59 04             	mov    %ebx,0x4(%ecx)
40ac5d:	8b 4f 04             	mov    0x4(%edi),%ecx
40ac60:	8b 7f 08             	mov    0x8(%edi),%edi
40ac63:	89 79 08             	mov    %edi,0x8(%ecx)
40ac66:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ac69:	2b ce                	sub    %esi,%ecx
40ac6b:	01 4d fc             	add    %ecx,-0x4(%ebp)
40ac6e:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40ac72:	0f 8e aa 00 00 00    	jle    0x40ad22
40ac78:	8b 7d fc             	mov    -0x4(%ebp),%edi
40ac7b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ac7e:	c1 ff 04             	sar    $0x4,%edi
40ac81:	4f                   	dec    %edi
40ac82:	8d 4c 31 fc          	lea    -0x4(%ecx,%esi,1),%ecx
40ac86:	83 ff 3f             	cmp    $0x3f,%edi
40ac89:	76 03                	jbe    0x40ac8e
40ac8b:	6a 3f                	push   $0x3f
40ac8d:	5f                   	pop    %edi
40ac8e:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40ac91:	8d 1c fb             	lea    (%ebx,%edi,8),%ebx
40ac94:	89 5d 10             	mov    %ebx,0x10(%ebp)
40ac97:	8b 5b 04             	mov    0x4(%ebx),%ebx
40ac9a:	89 59 04             	mov    %ebx,0x4(%ecx)
40ac9d:	8b 5d 10             	mov    0x10(%ebp),%ebx
40aca0:	89 59 08             	mov    %ebx,0x8(%ecx)
40aca3:	89 4b 04             	mov    %ecx,0x4(%ebx)
40aca6:	8b 59 04             	mov    0x4(%ecx),%ebx
40aca9:	89 4b 08             	mov    %ecx,0x8(%ebx)
40acac:	8b 59 04             	mov    0x4(%ecx),%ebx
40acaf:	3b 59 08             	cmp    0x8(%ecx),%ebx
40acb2:	75 5c                	jne    0x40ad10
40acb4:	8a 4c 07 04          	mov    0x4(%edi,%eax,1),%cl
40acb8:	83 ff 20             	cmp    $0x20,%edi
40acbb:	88 4d 13             	mov    %cl,0x13(%ebp)
40acbe:	fe c1                	inc    %cl
40acc0:	88 4c 07 04          	mov    %cl,0x4(%edi,%eax,1)
40acc4:	73 21                	jae    0x40ace7
40acc6:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
40acca:	75 0e                	jne    0x40acda
40accc:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40acd1:	8b cf                	mov    %edi,%ecx
40acd3:	d3 eb                	shr    %cl,%ebx
40acd5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40acd8:	09 19                	or     %ebx,(%ecx)
40acda:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
40acde:	ba 00 00 00 80       	mov    $0x80000000,%edx
40ace3:	8b cf                	mov    %edi,%ecx
40ace5:	eb 25                	jmp    0x40ad0c
40ace7:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
40aceb:	75 10                	jne    0x40acfd
40aced:	8d 4f e0             	lea    -0x20(%edi),%ecx
40acf0:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40acf5:	d3 eb                	shr    %cl,%ebx
40acf7:	8b 4d 08             	mov    0x8(%ebp),%ecx
40acfa:	09 59 04             	or     %ebx,0x4(%ecx)
40acfd:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
40ad04:	8d 4f e0             	lea    -0x20(%edi),%ecx
40ad07:	ba 00 00 00 80       	mov    $0x80000000,%edx
40ad0c:	d3 ea                	shr    %cl,%edx
40ad0e:	09 10                	or     %edx,(%eax)
40ad10:	8b 55 0c             	mov    0xc(%ebp),%edx
40ad13:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ad16:	8d 44 32 fc          	lea    -0x4(%edx,%esi,1),%eax
40ad1a:	89 08                	mov    %ecx,(%eax)
40ad1c:	89 4c 01 fc          	mov    %ecx,-0x4(%ecx,%eax,1)
40ad20:	eb 03                	jmp    0x40ad25
40ad22:	8b 55 0c             	mov    0xc(%ebp),%edx
40ad25:	8d 46 01             	lea    0x1(%esi),%eax
40ad28:	89 42 fc             	mov    %eax,-0x4(%edx)
40ad2b:	89 44 32 f8          	mov    %eax,-0x8(%edx,%esi,1)
40ad2f:	e9 47 01 00 00       	jmp    0x40ae7b
40ad34:	33 c0                	xor    %eax,%eax
40ad36:	e9 43 01 00 00       	jmp    0x40ae7e
40ad3b:	0f 8d 3a 01 00 00    	jge    0x40ae7b
40ad41:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40ad44:	29 75 10             	sub    %esi,0x10(%ebp)
40ad47:	8d 4e 01             	lea    0x1(%esi),%ecx
40ad4a:	89 4b fc             	mov    %ecx,-0x4(%ebx)
40ad4d:	8d 5c 33 fc          	lea    -0x4(%ebx,%esi,1),%ebx
40ad51:	8b 75 10             	mov    0x10(%ebp),%esi
40ad54:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40ad57:	c1 fe 04             	sar    $0x4,%esi
40ad5a:	4e                   	dec    %esi
40ad5b:	89 4b fc             	mov    %ecx,-0x4(%ebx)
40ad5e:	83 fe 3f             	cmp    $0x3f,%esi
40ad61:	76 03                	jbe    0x40ad66
40ad63:	6a 3f                	push   $0x3f
40ad65:	5e                   	pop    %esi
40ad66:	f6 45 fc 01          	testb  $0x1,-0x4(%ebp)
40ad6a:	0f 85 85 00 00 00    	jne    0x40adf5
40ad70:	8b 75 fc             	mov    -0x4(%ebp),%esi
40ad73:	c1 fe 04             	sar    $0x4,%esi
40ad76:	4e                   	dec    %esi
40ad77:	83 fe 3f             	cmp    $0x3f,%esi
40ad7a:	76 03                	jbe    0x40ad7f
40ad7c:	6a 3f                	push   $0x3f
40ad7e:	5e                   	pop    %esi
40ad7f:	8b 4f 04             	mov    0x4(%edi),%ecx
40ad82:	3b 4f 08             	cmp    0x8(%edi),%ecx
40ad85:	75 47                	jne    0x40adce
40ad87:	83 fe 20             	cmp    $0x20,%esi
40ad8a:	73 1e                	jae    0x40adaa
40ad8c:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40ad91:	8b ce                	mov    %esi,%ecx
40ad93:	d3 eb                	shr    %cl,%ebx
40ad95:	8d 74 06 04          	lea    0x4(%esi,%eax,1),%esi
40ad99:	f7 d3                	not    %ebx
40ad9b:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40ad9f:	fe 0e                	decb   (%esi)
40ada1:	75 28                	jne    0x40adcb
40ada3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ada6:	21 19                	and    %ebx,(%ecx)
40ada8:	eb 21                	jmp    0x40adcb
40adaa:	8d 4e e0             	lea    -0x20(%esi),%ecx
40adad:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40adb2:	d3 eb                	shr    %cl,%ebx
40adb4:	8d 4c 06 04          	lea    0x4(%esi,%eax,1),%ecx
40adb8:	f7 d3                	not    %ebx
40adba:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
40adc1:	fe 09                	decb   (%ecx)
40adc3:	75 06                	jne    0x40adcb
40adc5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40adc8:	21 59 04             	and    %ebx,0x4(%ecx)
40adcb:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40adce:	8b 4f 08             	mov    0x8(%edi),%ecx
40add1:	8b 77 04             	mov    0x4(%edi),%esi
40add4:	89 71 04             	mov    %esi,0x4(%ecx)
40add7:	8b 4f 04             	mov    0x4(%edi),%ecx
40adda:	8b 77 08             	mov    0x8(%edi),%esi
40addd:	89 71 08             	mov    %esi,0x8(%ecx)
40ade0:	8b 75 10             	mov    0x10(%ebp),%esi
40ade3:	03 75 fc             	add    -0x4(%ebp),%esi
40ade6:	89 75 10             	mov    %esi,0x10(%ebp)
40ade9:	c1 fe 04             	sar    $0x4,%esi
40adec:	4e                   	dec    %esi
40aded:	83 fe 3f             	cmp    $0x3f,%esi
40adf0:	76 03                	jbe    0x40adf5
40adf2:	6a 3f                	push   $0x3f
40adf4:	5e                   	pop    %esi
40adf5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40adf8:	8b 7c f1 04          	mov    0x4(%ecx,%esi,8),%edi
40adfc:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
40adff:	89 7b 04             	mov    %edi,0x4(%ebx)
40ae02:	89 4b 08             	mov    %ecx,0x8(%ebx)
40ae05:	89 59 04             	mov    %ebx,0x4(%ecx)
40ae08:	8b 4b 04             	mov    0x4(%ebx),%ecx
40ae0b:	89 59 08             	mov    %ebx,0x8(%ecx)
40ae0e:	8b 4b 04             	mov    0x4(%ebx),%ecx
40ae11:	3b 4b 08             	cmp    0x8(%ebx),%ecx
40ae14:	75 5c                	jne    0x40ae72
40ae16:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
40ae1a:	83 fe 20             	cmp    $0x20,%esi
40ae1d:	88 4d 0f             	mov    %cl,0xf(%ebp)
40ae20:	fe c1                	inc    %cl
40ae22:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
40ae26:	73 21                	jae    0x40ae49
40ae28:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40ae2c:	75 0e                	jne    0x40ae3c
40ae2e:	bf 00 00 00 80       	mov    $0x80000000,%edi
40ae33:	8b ce                	mov    %esi,%ecx
40ae35:	d3 ef                	shr    %cl,%edi
40ae37:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ae3a:	09 39                	or     %edi,(%ecx)
40ae3c:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
40ae40:	ba 00 00 00 80       	mov    $0x80000000,%edx
40ae45:	8b ce                	mov    %esi,%ecx
40ae47:	eb 25                	jmp    0x40ae6e
40ae49:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40ae4d:	75 10                	jne    0x40ae5f
40ae4f:	8d 4e e0             	lea    -0x20(%esi),%ecx
40ae52:	bf 00 00 00 80       	mov    $0x80000000,%edi
40ae57:	d3 ef                	shr    %cl,%edi
40ae59:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ae5c:	09 79 04             	or     %edi,0x4(%ecx)
40ae5f:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
40ae66:	8d 4e e0             	lea    -0x20(%esi),%ecx
40ae69:	ba 00 00 00 80       	mov    $0x80000000,%edx
40ae6e:	d3 ea                	shr    %cl,%edx
40ae70:	09 10                	or     %edx,(%eax)
40ae72:	8b 45 10             	mov    0x10(%ebp),%eax
40ae75:	89 03                	mov    %eax,(%ebx)
40ae77:	89 44 18 fc          	mov    %eax,-0x4(%eax,%ebx,1)
40ae7b:	6a 01                	push   $0x1
40ae7d:	58                   	pop    %eax
40ae7e:	5f                   	pop    %edi
40ae7f:	5e                   	pop    %esi
40ae80:	5b                   	pop    %ebx
40ae81:	c9                   	leave
40ae82:	c3                   	ret
40ae83:	cc                   	int3
40ae84:	cc                   	int3
40ae85:	cc                   	int3
40ae86:	cc                   	int3
40ae87:	cc                   	int3
40ae88:	cc                   	int3
40ae89:	cc                   	int3
40ae8a:	cc                   	int3
40ae8b:	cc                   	int3
40ae8c:	cc                   	int3
40ae8d:	cc                   	int3
40ae8e:	cc                   	int3
40ae8f:	cc                   	int3
40ae90:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40ae94:	57                   	push   %edi
40ae95:	85 c9                	test   %ecx,%ecx
40ae97:	74 7a                	je     0x40af13
40ae99:	56                   	push   %esi
40ae9a:	53                   	push   %ebx
40ae9b:	8b d9                	mov    %ecx,%ebx
40ae9d:	8b 74 24 14          	mov    0x14(%esp),%esi
40aea1:	f7 c6 03 00 00 00    	test   $0x3,%esi
40aea7:	8b 7c 24 10          	mov    0x10(%esp),%edi
40aeab:	75 07                	jne    0x40aeb4
40aead:	c1 e9 02             	shr    $0x2,%ecx
40aeb0:	75 6f                	jne    0x40af21
40aeb2:	eb 21                	jmp    0x40aed5
40aeb4:	8a 06                	mov    (%esi),%al
40aeb6:	46                   	inc    %esi
40aeb7:	88 07                	mov    %al,(%edi)
40aeb9:	47                   	inc    %edi
40aeba:	49                   	dec    %ecx
40aebb:	74 25                	je     0x40aee2
40aebd:	84 c0                	test   %al,%al
40aebf:	74 29                	je     0x40aeea
40aec1:	f7 c6 03 00 00 00    	test   $0x3,%esi
40aec7:	75 eb                	jne    0x40aeb4
40aec9:	8b d9                	mov    %ecx,%ebx
40aecb:	c1 e9 02             	shr    $0x2,%ecx
40aece:	75 51                	jne    0x40af21
40aed0:	83 e3 03             	and    $0x3,%ebx
40aed3:	74 0d                	je     0x40aee2
40aed5:	8a 06                	mov    (%esi),%al
40aed7:	46                   	inc    %esi
40aed8:	88 07                	mov    %al,(%edi)
40aeda:	47                   	inc    %edi
40aedb:	84 c0                	test   %al,%al
40aedd:	74 2f                	je     0x40af0e
40aedf:	4b                   	dec    %ebx
40aee0:	75 f3                	jne    0x40aed5
40aee2:	8b 44 24 10          	mov    0x10(%esp),%eax
40aee6:	5b                   	pop    %ebx
40aee7:	5e                   	pop    %esi
40aee8:	5f                   	pop    %edi
40aee9:	c3                   	ret
40aeea:	f7 c7 03 00 00 00    	test   $0x3,%edi
40aef0:	74 12                	je     0x40af04
40aef2:	88 07                	mov    %al,(%edi)
40aef4:	47                   	inc    %edi
40aef5:	49                   	dec    %ecx
40aef6:	0f 84 8a 00 00 00    	je     0x40af86
40aefc:	f7 c7 03 00 00 00    	test   $0x3,%edi
40af02:	75 ee                	jne    0x40aef2
40af04:	8b d9                	mov    %ecx,%ebx
40af06:	c1 e9 02             	shr    $0x2,%ecx
40af09:	75 6c                	jne    0x40af77
40af0b:	88 07                	mov    %al,(%edi)
40af0d:	47                   	inc    %edi
40af0e:	4b                   	dec    %ebx
40af0f:	75 fa                	jne    0x40af0b
40af11:	5b                   	pop    %ebx
40af12:	5e                   	pop    %esi
40af13:	8b 44 24 08          	mov    0x8(%esp),%eax
40af17:	5f                   	pop    %edi
40af18:	c3                   	ret
40af19:	89 17                	mov    %edx,(%edi)
40af1b:	83 c7 04             	add    $0x4,%edi
40af1e:	49                   	dec    %ecx
40af1f:	74 af                	je     0x40aed0
40af21:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
40af26:	8b 06                	mov    (%esi),%eax
40af28:	03 d0                	add    %eax,%edx
40af2a:	83 f0 ff             	xor    $0xffffffff,%eax
40af2d:	33 c2                	xor    %edx,%eax
40af2f:	8b 16                	mov    (%esi),%edx
40af31:	83 c6 04             	add    $0x4,%esi
40af34:	a9 00 01 01 81       	test   $0x81010100,%eax
40af39:	74 de                	je     0x40af19
40af3b:	84 d2                	test   %dl,%dl
40af3d:	74 2c                	je     0x40af6b
40af3f:	84 f6                	test   %dh,%dh
40af41:	74 1e                	je     0x40af61
40af43:	f7 c2 00 00 ff 00    	test   $0xff0000,%edx
40af49:	74 0c                	je     0x40af57
40af4b:	f7 c2 00 00 00 ff    	test   $0xff000000,%edx
40af51:	75 c6                	jne    0x40af19
40af53:	89 17                	mov    %edx,(%edi)
40af55:	eb 18                	jmp    0x40af6f
40af57:	81 e2 ff ff 00 00    	and    $0xffff,%edx
40af5d:	89 17                	mov    %edx,(%edi)
40af5f:	eb 0e                	jmp    0x40af6f
40af61:	81 e2 ff 00 00 00    	and    $0xff,%edx
40af67:	89 17                	mov    %edx,(%edi)
40af69:	eb 04                	jmp    0x40af6f
40af6b:	33 d2                	xor    %edx,%edx
40af6d:	89 17                	mov    %edx,(%edi)
40af6f:	83 c7 04             	add    $0x4,%edi
40af72:	33 c0                	xor    %eax,%eax
40af74:	49                   	dec    %ecx
40af75:	74 0a                	je     0x40af81
40af77:	33 c0                	xor    %eax,%eax
40af79:	89 07                	mov    %eax,(%edi)
40af7b:	83 c7 04             	add    $0x4,%edi
40af7e:	49                   	dec    %ecx
40af7f:	75 f8                	jne    0x40af79
40af81:	83 e3 03             	and    $0x3,%ebx
40af84:	75 85                	jne    0x40af0b
40af86:	8b 44 24 10          	mov    0x10(%esp),%eax
40af8a:	5b                   	pop    %ebx
40af8b:	5e                   	pop    %esi
40af8c:	5f                   	pop    %edi
40af8d:	c3                   	ret
40af8e:	cc                   	int3
40af8f:	cc                   	int3
40af90:	55                   	push   %ebp
40af91:	8b ec                	mov    %esp,%ebp
40af93:	56                   	push   %esi
40af94:	33 c0                	xor    %eax,%eax
40af96:	50                   	push   %eax
40af97:	50                   	push   %eax
40af98:	50                   	push   %eax