40ac66:	33 c0                	xor    %eax,%eax
40ac68:	5e                   	pop    %esi
40ac69:	c3                   	ret
40ac6a:	6a 10                	push   $0x10
40ac6c:	68 c0 0d 41 00       	push   $0x410dc0
40ac71:	e8 c2 45 00 00       	call   0x40f238
40ac76:	8b f1                	mov    %ecx,%esi
40ac78:	85 f6                	test   %esi,%esi
40ac7a:	75 14                	jne    0x40ac90
40ac7c:	ff 15 48 20 41 00    	call   *0x412048
40ac82:	85 c0                	test   %eax,%eax
40ac84:	75 7c                	jne    0x40ad02
40ac86:	6a 57                	push   $0x57
40ac88:	ff 15 74 20 41 00    	call   *0x412074
40ac8e:	eb 72                	jmp    0x40ad02
40ac90:	ff 15 90 20 41 00    	call   *0x412090
40ac96:	85 c0                	test   %eax,%eax
40ac98:	74 68                	je     0x40ad02
40ac9a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ac9e:	56                   	push   %esi
40ac9f:	6a 0c                	push   $0xc
40aca1:	50                   	push   %eax
40aca2:	ff 15 84 20 41 00    	call   *0x412084
40aca8:	89 45 e0             	mov    %eax,-0x20(%ebp)
40acab:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40acb2:	eb 50                	jmp    0x40ad04
40acb4:	8b 45 ec             	mov    -0x14(%ebp),%eax
40acb7:	8b 00                	mov    (%eax),%eax
40acb9:	8b 00                	mov    (%eax),%eax
40acbb:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40acbe:	33 c0                	xor    %eax,%eax
40acc0:	40                   	inc    %eax
40acc1:	c3                   	ret
40acc2:	8b 65 e8             	mov    -0x18(%ebp),%esp
40acc5:	81 7d e4 17 00 00 c0 	cmpl   $0xc0000017,-0x1c(%ebp)
40accc:	74 1b                	je     0x40ace9
40acce:	81 7d e4 05 00 00 c0 	cmpl   $0xc0000005,-0x1c(%ebp)
40acd5:	75 12                	jne    0x40ace9
40acd7:	68 70 05 00 00       	push   $0x570
40acdc:	ff 15 74 20 41 00    	call   *0x412074
40ace2:	e8 0d eb ff ff       	call   0x4097f4
40ace7:	eb 12                	jmp    0x40acfb
40ace9:	ff 15 48 20 41 00    	call   *0x412048
40acef:	85 c0                	test   %eax,%eax
40acf1:	75 08                	jne    0x40acfb
40acf3:	6a 08                	push   $0x8
40acf5:	ff 15 74 20 41 00    	call   *0x412074
40acfb:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ad02:	33 c0                	xor    %eax,%eax
40ad04:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ad07:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ad0e:	59                   	pop    %ecx
40ad0f:	5f                   	pop    %edi
40ad10:	5e                   	pop    %esi
40ad11:	5b                   	pop    %ebx
40ad12:	c9                   	leave
40ad13:	c3                   	ret
40ad14:	6a 0c                	push   $0xc
40ad16:	68 e0 0d 41 00       	push   $0x410de0
40ad1b:	e8 18 45 00 00       	call   0x40f238
40ad20:	8b fa                	mov    %edx,%edi
40ad22:	8b f1                	mov    %ecx,%esi
40ad24:	85 f6                	test   %esi,%esi
40ad26:	0f 84 aa 00 00 00    	je     0x40add6
40ad2c:	8b 0e                	mov    (%esi),%ecx
40ad2e:	85 c9                	test   %ecx,%ecx
40ad30:	0f 84 a0 00 00 00    	je     0x40add6
40ad36:	85 ff                	test   %edi,%edi
40ad38:	75 0c                	jne    0x40ad46
40ad3a:	8b ce                	mov    %esi,%ecx
40ad3c:	e8 85 fe ff ff       	call   0x40abc6
40ad41:	e9 a4 00 00 00       	jmp    0x40adea
40ad46:	e8 e4 fe ff ff       	call   0x40ac2f
40ad4b:	85 c0                	test   %eax,%eax
40ad4d:	75 07                	jne    0x40ad56
40ad4f:	21 06                	and    %eax,(%esi)
40ad51:	e9 92 00 00 00       	jmp    0x40ade8
40ad56:	ff 15 90 20 41 00    	call   *0x412090
40ad5c:	85 c0                	test   %eax,%eax
40ad5e:	0f 84 84 00 00 00    	je     0x40ade8
40ad64:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ad68:	57                   	push   %edi
40ad69:	ff 36                	push   (%esi)
40ad6b:	6a 0c                	push   $0xc
40ad6d:	50                   	push   %eax
40ad6e:	ff 15 80 20 41 00    	call   *0x412080
40ad74:	85 c0                	test   %eax,%eax
40ad76:	75 1b                	jne    0x40ad93
40ad78:	ff 15 48 20 41 00    	call   *0x412048
40ad7e:	85 c0                	test   %eax,%eax
40ad80:	75 08                	jne    0x40ad8a
40ad82:	6a 08                	push   $0x8
40ad84:	ff 15 74 20 41 00    	call   *0x412074
40ad8a:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ad91:	eb 55                	jmp    0x40ade8
40ad93:	89 06                	mov    %eax,(%esi)
40ad95:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ad9c:	33 c0                	xor    %eax,%eax
40ad9e:	40                   	inc    %eax
40ad9f:	eb 49                	jmp    0x40adea
40ada1:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ada4:	8b 00                	mov    (%eax),%eax
40ada6:	8b 00                	mov    (%eax),%eax
40ada8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40adab:	33 c0                	xor    %eax,%eax
40adad:	40                   	inc    %eax
40adae:	c3                   	ret
40adaf:	8b 65 e8             	mov    -0x18(%ebp),%esp
40adb2:	81 7d e4 17 00 00 c0 	cmpl   $0xc0000017,-0x1c(%ebp)
40adb9:	74 bd                	je     0x40ad78
40adbb:	81 7d e4 05 00 00 c0 	cmpl   $0xc0000005,-0x1c(%ebp)
40adc2:	75 b4                	jne    0x40ad78
40adc4:	68 70 05 00 00       	push   $0x570
40adc9:	ff 15 74 20 41 00    	call   *0x412074
40adcf:	e8 20 ea ff ff       	call   0x4097f4
40add4:	eb b4                	jmp    0x40ad8a
40add6:	ff 15 48 20 41 00    	call   *0x412048
40addc:	85 c0                	test   %eax,%eax
40adde:	75 08                	jne    0x40ade8
40ade0:	6a 57                	push   $0x57
40ade2:	ff 15 74 20 41 00    	call   *0x412074
40ade8:	33 c0                	xor    %eax,%eax
40adea:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40aded:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40adf4:	59                   	pop    %ecx
40adf5:	5f                   	pop    %edi
40adf6:	5e                   	pop    %esi
40adf7:	5b                   	pop    %ebx
40adf8:	c9                   	leave
40adf9:	c3                   	ret
40adfa:	8b ff                	mov    %edi,%edi
40adfc:	56                   	push   %esi
40adfd:	8b f1                	mov    %ecx,%esi
40adff:	85 f6                	test   %esi,%esi
40ae01:	75 17                	jne    0x40ae1a
40ae03:	ff 15 48 20 41 00    	call   *0x412048
40ae09:	85 c0                	test   %eax,%eax
40ae0b:	75 08                	jne    0x40ae15
40ae0d:	6a 57                	push   $0x57
40ae0f:	ff 15 74 20 41 00    	call   *0x412074
40ae15:	83 c8 ff             	or     $0xffffffff,%eax
40ae18:	5e                   	pop    %esi
40ae19:	c3                   	ret
40ae1a:	e8 10 fe ff ff       	call   0x40ac2f
40ae1f:	85 c0                	test   %eax,%eax
40ae21:	74 f2                	je     0x40ae15
40ae23:	ff 15 90 20 41 00    	call   *0x412090
40ae29:	85 c0                	test   %eax,%eax
40ae2b:	74 e8                	je     0x40ae15
40ae2d:	56                   	push   %esi
40ae2e:	6a 00                	push   $0x0
40ae30:	50                   	push   %eax
40ae31:	ff 15 7c 20 41 00    	call   *0x41207c
40ae37:	5e                   	pop    %esi
40ae38:	c3                   	ret
40ae39:	8b ff                	mov    %edi,%edi
40ae3b:	55                   	push   %ebp
40ae3c:	8b ec                	mov    %esp,%ebp
40ae3e:	53                   	push   %ebx
40ae3f:	56                   	push   %esi
40ae40:	57                   	push   %edi
40ae41:	33 ff                	xor    %edi,%edi
40ae43:	bb 57 00 07 80       	mov    $0x80070057,%ebx
40ae48:	8b f7                	mov    %edi,%esi
40ae4a:	85 d2                	test   %edx,%edx
40ae4c:	74 08                	je     0x40ae56
40ae4e:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40ae54:	76 02                	jbe    0x40ae58
40ae56:	8b f3                	mov    %ebx,%esi
40ae58:	85 f6                	test   %esi,%esi
40ae5a:	78 42                	js     0x40ae9e
40ae5c:	8b f2                	mov    %edx,%esi
40ae5e:	8b c1                	mov    %ecx,%eax
40ae60:	85 d2                	test   %edx,%edx
40ae62:	74 0d                	je     0x40ae71
40ae64:	66 39 38             	cmp    %di,(%eax)
40ae67:	74 08                	je     0x40ae71
40ae69:	83 c0 02             	add    $0x2,%eax
40ae6c:	83 ee 01             	sub    $0x1,%esi
40ae6f:	75 f3                	jne    0x40ae64
40ae71:	8b fe                	mov    %esi,%edi
40ae73:	8b c2                	mov    %edx,%eax
40ae75:	f7 de                	neg    %esi
40ae77:	1b f6                	sbb    %esi,%esi
40ae79:	2b c7                	sub    %edi,%eax
40ae7b:	81 e6 a9 ff f8 7f    	and    $0x7ff8ffa9,%esi
40ae81:	03 f3                	add    %ebx,%esi
40ae83:	f7 df                	neg    %edi
40ae85:	1b ff                	sbb    %edi,%edi
40ae87:	23 f8                	and    %eax,%edi
40ae89:	85 f6                	test   %esi,%esi
40ae8b:	78 11                	js     0x40ae9e
40ae8d:	51                   	push   %ecx
40ae8e:	ff 75 08             	push   0x8(%ebp)
40ae91:	2b d7                	sub    %edi,%edx
40ae93:	51                   	push   %ecx
40ae94:	8d 0c 79             	lea    (%ecx,%edi,2),%ecx
40ae97:	e8 0b 00 00 00       	call   0x40aea7
40ae9c:	8b f0                	mov    %eax,%esi
40ae9e:	5f                   	pop    %edi
40ae9f:	8b c6                	mov    %esi,%eax
40aea1:	5e                   	pop    %esi
40aea2:	5b                   	pop    %ebx
40aea3:	5d                   	pop    %ebp
40aea4:	c2 04 00             	ret    $0x4
40aea7:	8b ff                	mov    %edi,%edi
40aea9:	55                   	push   %ebp
40aeaa:	8b ec                	mov    %esp,%ebp
40aeac:	85 d2                	test   %edx,%edx
40aeae:	74 2b                	je     0x40aedb
40aeb0:	8b 45 0c             	mov    0xc(%ebp),%eax
40aeb3:	56                   	push   %esi
40aeb4:	57                   	push   %edi
40aeb5:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40aeba:	2b c1                	sub    %ecx,%eax
40aebc:	85 f6                	test   %esi,%esi
40aebe:	74 15                	je     0x40aed5
40aec0:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
40aec4:	66 85 ff             	test   %di,%di
40aec7:	74 0c                	je     0x40aed5
40aec9:	66 89 39             	mov    %di,(%ecx)
40aecc:	83 c1 02             	add    $0x2,%ecx
40aecf:	4e                   	dec    %esi
40aed0:	83 ea 01             	sub    $0x1,%edx
40aed3:	75 e7                	jne    0x40aebc
40aed5:	5f                   	pop    %edi
40aed6:	5e                   	pop    %esi
40aed7:	85 d2                	test   %edx,%edx
40aed9:	75 03                	jne    0x40aede
40aedb:	83 e9 02             	sub    $0x2,%ecx
40aede:	f7 da                	neg    %edx
40aee0:	1b d2                	sbb    %edx,%edx
40aee2:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
40aee8:	33 c0                	xor    %eax,%eax
40aeea:	66 89 01             	mov    %ax,(%ecx)
40aeed:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
40aef3:	5d                   	pop    %ebp
40aef4:	c2 0c 00             	ret    $0xc
40aef7:	8b ff                	mov    %edi,%edi
40aef9:	55                   	push   %ebp
40aefa:	8b ec                	mov    %esp,%ebp
40aefc:	85 d2                	test   %edx,%edx
40aefe:	74 26                	je     0x40af26
40af00:	8b 45 0c             	mov    0xc(%ebp),%eax
40af03:	53                   	push   %ebx
40af04:	56                   	push   %esi
40af05:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40af0a:	2b c1                	sub    %ecx,%eax
40af0c:	85 f6                	test   %esi,%esi
40af0e:	74 10                	je     0x40af20
40af10:	8a 1c 08             	mov    (%eax,%ecx,1),%bl
40af13:	84 db                	test   %bl,%bl
40af15:	74 09                	je     0x40af20
40af17:	88 19                	mov    %bl,(%ecx)
40af19:	41                   	inc    %ecx
40af1a:	4e                   	dec    %esi
40af1b:	83 ea 01             	sub    $0x1,%edx
40af1e:	75 ec                	jne    0x40af0c
40af20:	5e                   	pop    %esi
40af21:	5b                   	pop    %ebx
40af22:	85 d2                	test   %edx,%edx
40af24:	75 01                	jne    0x40af27
40af26:	49                   	dec    %ecx
40af27:	f7 da                	neg    %edx
40af29:	c6 01 00             	movb   $0x0,(%ecx)
40af2c:	1b d2                	sbb    %edx,%edx
40af2e:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
40af34:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
40af3a:	5d                   	pop    %ebp
40af3b:	c2 0c 00             	ret    $0xc
40af3e:	8b ff                	mov    %edi,%edi
40af40:	55                   	push   %ebp
40af41:	8b ec                	mov    %esp,%ebp
40af43:	53                   	push   %ebx
40af44:	56                   	push   %esi
40af45:	33 f6                	xor    %esi,%esi
40af47:	8b d9                	mov    %ecx,%ebx
40af49:	85 d2                	test   %edx,%edx
40af4b:	74 08                	je     0x40af55
40af4d:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40af53:	76 05                	jbe    0x40af5a
40af55:	be 57 00 07 80       	mov    $0x80070057,%esi
40af5a:	85 f6                	test   %esi,%esi
40af5c:	78 31                	js     0x40af8f
40af5e:	57                   	push   %edi
40af5f:	ff 75 0c             	push   0xc(%ebp)
40af62:	8d 7a ff             	lea    -0x1(%edx),%edi
40af65:	33 f6                	xor    %esi,%esi
40af67:	ff 75 08             	push   0x8(%ebp)
40af6a:	57                   	push   %edi
40af6b:	53                   	push   %ebx
40af6c:	ff 15 d4 22 41 00    	call   *0x4122d4
40af72:	83 c4 10             	add    $0x10,%esp
40af75:	85 c0                	test   %eax,%eax
40af77:	78 08                	js     0x40af81
40af79:	3b c7                	cmp    %edi,%eax
40af7b:	77 04                	ja     0x40af81
40af7d:	75 0d                	jne    0x40af8c
40af7f:	eb 05                	jmp    0x40af86
40af81:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40af86:	33 c0                	xor    %eax,%eax
40af88:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40af8c:	5f                   	pop    %edi
40af8d:	eb 09                	jmp    0x40af98
40af8f:	85 d2                	test   %edx,%edx
40af91:	74 05                	je     0x40af98
40af93:	33 c0                	xor    %eax,%eax
40af95:	66 89 03             	mov    %ax,(%ebx)
40af98:	8b c6                	mov    %esi,%eax
40af9a:	5e                   	pop    %esi
40af9b:	5b                   	pop    %ebx
40af9c:	5d                   	pop    %ebp
40af9d:	c2 08 00             	ret    $0x8
40afa0:	8b ff                	mov    %edi,%edi
40afa2:	56                   	push   %esi
40afa3:	8b f1                	mov    %ecx,%esi
40afa5:	85 f6                	test   %esi,%esi
40afa7:	75 14                	jne    0x40afbd
40afa9:	ff 15 48 20 41 00    	call   *0x412048
40afaf:	85 c0                	test   %eax,%eax
40afb1:	75 14                	jne    0x40afc7
40afb3:	6a 57                	push   $0x57
40afb5:	ff 15 74 20 41 00    	call   *0x412074
40afbb:	eb 0a                	jmp    0x40afc7
40afbd:	e8 c9 f4 ff ff       	call   0x40a48b
40afc2:	83 f8 02             	cmp    $0x2,%eax
40afc5:	77 04                	ja     0x40afcb
40afc7:	33 c0                	xor    %eax,%eax
40afc9:	5e                   	pop    %esi
40afca:	c3                   	ret
40afcb:	6a 02                	push   $0x2
40afcd:	6a 01                	push   $0x1
40afcf:	ba 3c 17 40 00       	mov    $0x40173c,%edx
40afd4:	8b ce                	mov    %esi,%ecx
40afd6:	e8 bf f4 ff ff       	call   0x40a49a
40afdb:	f7 d8                	neg    %eax
40afdd:	5e                   	pop    %esi
40afde:	1b c0                	sbb    %eax,%eax
40afe0:	40                   	inc    %eax
40afe1:	c3                   	ret
40afe2:	8b ff                	mov    %edi,%edi
40afe4:	55                   	push   %ebp
40afe5:	8b ec                	mov    %esp,%ebp
40afe7:	83 e4 f8             	and    $0xfffffff8,%esp
40afea:	51                   	push   %ecx
40afeb:	53                   	push   %ebx
40afec:	56                   	push   %esi
40afed:	57                   	push   %edi
40afee:	33 ff                	xor    %edi,%edi
40aff0:	8b f1                	mov    %ecx,%esi