40aa08:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40aa0b:	33 d2                	xor    %edx,%edx
40aa0d:	f6 c3 01             	test   $0x1,%bl
40aa10:	74 03                	je     0x40aa15
40aa12:	6a 10                	push   $0x10
40aa14:	5a                   	pop    %edx
40aa15:	f6 c3 04             	test   $0x4,%bl
40aa18:	74 03                	je     0x40aa1d
40aa1a:	83 ca 08             	or     $0x8,%edx
40aa1d:	f6 c3 08             	test   $0x8,%bl
40aa20:	74 03                	je     0x40aa25
40aa22:	83 ca 04             	or     $0x4,%edx
40aa25:	f6 c3 10             	test   $0x10,%bl
40aa28:	74 03                	je     0x40aa2d
40aa2a:	83 ca 02             	or     $0x2,%edx
40aa2d:	f6 c3 20             	test   $0x20,%bl
40aa30:	74 03                	je     0x40aa35
40aa32:	83 ca 01             	or     $0x1,%edx
40aa35:	f6 c3 02             	test   $0x2,%bl
40aa38:	74 06                	je     0x40aa40
40aa3a:	81 ca 00 00 08 00    	or     $0x80000,%edx
40aa40:	0f b7 cb             	movzwl %bx,%ecx
40aa43:	8b c1                	mov    %ecx,%eax
40aa45:	be 00 0c 00 00       	mov    $0xc00,%esi
40aa4a:	23 c6                	and    %esi,%eax
40aa4c:	bf 00 03 00 00       	mov    $0x300,%edi
40aa51:	74 24                	je     0x40aa77
40aa53:	3d 00 04 00 00       	cmp    $0x400,%eax
40aa58:	74 17                	je     0x40aa71
40aa5a:	3d 00 08 00 00       	cmp    $0x800,%eax
40aa5f:	74 08                	je     0x40aa69
40aa61:	3b c6                	cmp    %esi,%eax
40aa63:	75 12                	jne    0x40aa77
40aa65:	0b d7                	or     %edi,%edx
40aa67:	eb 0e                	jmp    0x40aa77
40aa69:	81 ca 00 02 00 00    	or     $0x200,%edx
40aa6f:	eb 06                	jmp    0x40aa77
40aa71:	81 ca 00 01 00 00    	or     $0x100,%edx
40aa77:	23 cf                	and    %edi,%ecx
40aa79:	74 10                	je     0x40aa8b
40aa7b:	81 f9 00 02 00 00    	cmp    $0x200,%ecx
40aa81:	75 0e                	jne    0x40aa91
40aa83:	81 ca 00 00 01 00    	or     $0x10000,%edx
40aa89:	eb 06                	jmp    0x40aa91
40aa8b:	81 ca 00 00 02 00    	or     $0x20000,%edx
40aa91:	f7 c3 00 10 00 00    	test   $0x1000,%ebx
40aa97:	74 06                	je     0x40aa9f
40aa99:	81 ca 00 00 04 00    	or     $0x40000,%edx
40aa9f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40aaa2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40aaa5:	8b c7                	mov    %edi,%eax
40aaa7:	f7 d0                	not    %eax
40aaa9:	23 c2                	and    %edx,%eax
40aaab:	23 cf                	and    %edi,%ecx
40aaad:	0b c1                	or     %ecx,%eax
40aaaf:	89 45 0c             	mov    %eax,0xc(%ebp)
40aab2:	3b c2                	cmp    %edx,%eax
40aab4:	0f 84 ae 00 00 00    	je     0x40ab68
40aaba:	8b d8                	mov    %eax,%ebx
40aabc:	e8 0a fe ff ff       	call   0x40a8cb
40aac1:	0f b7 c0             	movzwl %ax,%eax
40aac4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40aac7:	d9 6d fc             	fldcw  -0x4(%ebp)
40aaca:	9b d9 7d fc          	fstcw  -0x4(%ebp)
40aace:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40aad1:	33 d2                	xor    %edx,%edx
40aad3:	f6 c3 01             	test   $0x1,%bl
40aad6:	74 03                	je     0x40aadb
40aad8:	6a 10                	push   $0x10
40aada:	5a                   	pop    %edx
40aadb:	f6 c3 04             	test   $0x4,%bl
40aade:	74 03                	je     0x40aae3
40aae0:	83 ca 08             	or     $0x8,%edx
40aae3:	f6 c3 08             	test   $0x8,%bl
40aae6:	74 03                	je     0x40aaeb
40aae8:	83 ca 04             	or     $0x4,%edx
40aaeb:	f6 c3 10             	test   $0x10,%bl
40aaee:	74 03                	je     0x40aaf3
40aaf0:	83 ca 02             	or     $0x2,%edx
40aaf3:	f6 c3 20             	test   $0x20,%bl
40aaf6:	74 03                	je     0x40aafb
40aaf8:	83 ca 01             	or     $0x1,%edx
40aafb:	f6 c3 02             	test   $0x2,%bl
40aafe:	74 06                	je     0x40ab06
40ab00:	81 ca 00 00 08 00    	or     $0x80000,%edx
40ab06:	0f b7 cb             	movzwl %bx,%ecx
40ab09:	8b c1                	mov    %ecx,%eax
40ab0b:	23 c6                	and    %esi,%eax
40ab0d:	74 28                	je     0x40ab37
40ab0f:	3d 00 04 00 00       	cmp    $0x400,%eax
40ab14:	74 1b                	je     0x40ab31
40ab16:	3d 00 08 00 00       	cmp    $0x800,%eax
40ab1b:	74 0c                	je     0x40ab29
40ab1d:	3b c6                	cmp    %esi,%eax
40ab1f:	75 16                	jne    0x40ab37
40ab21:	81 ca 00 03 00 00    	or     $0x300,%edx
40ab27:	eb 0e                	jmp    0x40ab37
40ab29:	81 ca 00 02 00 00    	or     $0x200,%edx
40ab2f:	eb 06                	jmp    0x40ab37
40ab31:	81 ca 00 01 00 00    	or     $0x100,%edx
40ab37:	81 e1 00 03 00 00    	and    $0x300,%ecx
40ab3d:	74 10                	je     0x40ab4f
40ab3f:	81 f9 00 02 00 00    	cmp    $0x200,%ecx
40ab45:	75 0e                	jne    0x40ab55
40ab47:	81 ca 00 00 01 00    	or     $0x10000,%edx
40ab4d:	eb 06                	jmp    0x40ab55
40ab4f:	81 ca 00 00 02 00    	or     $0x20000,%edx
40ab55:	f7 c3 00 10 00 00    	test   $0x1000,%ebx
40ab5b:	74 06                	je     0x40ab63
40ab5d:	81 ca 00 00 04 00    	or     $0x40000,%edx
40ab63:	89 55 0c             	mov    %edx,0xc(%ebp)
40ab66:	8b c2                	mov    %edx,%eax
40ab68:	33 f6                	xor    %esi,%esi
40ab6a:	39 35 b8 2e de 02    	cmp    %esi,0x2de2eb8
40ab70:	0f 84 8d 01 00 00    	je     0x40ad03
40ab76:	81 e7 1f 03 08 03    	and    $0x308031f,%edi
40ab7c:	89 7d ec             	mov    %edi,-0x14(%ebp)
40ab7f:	0f ae 5d f0          	stmxcsr -0x10(%ebp)
40ab83:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ab86:	84 c0                	test   %al,%al
40ab88:	79 03                	jns    0x40ab8d
40ab8a:	6a 10                	push   $0x10
40ab8c:	5e                   	pop    %esi
40ab8d:	a9 00 02 00 00       	test   $0x200,%eax
40ab92:	74 03                	je     0x40ab97
40ab94:	83 ce 08             	or     $0x8,%esi
40ab97:	a9 00 04 00 00       	test   $0x400,%eax
40ab9c:	74 03                	je     0x40aba1
40ab9e:	83 ce 04             	or     $0x4,%esi
40aba1:	a9 00 08 00 00       	test   $0x800,%eax
40aba6:	74 03                	je     0x40abab
40aba8:	83 ce 02             	or     $0x2,%esi
40abab:	a9 00 10 00 00       	test   $0x1000,%eax
40abb0:	74 03                	je     0x40abb5
40abb2:	83 ce 01             	or     $0x1,%esi
40abb5:	a9 00 01 00 00       	test   $0x100,%eax
40abba:	74 06                	je     0x40abc2
40abbc:	81 ce 00 00 08 00    	or     $0x80000,%esi
40abc2:	8b c8                	mov    %eax,%ecx
40abc4:	bb 00 60 00 00       	mov    $0x6000,%ebx
40abc9:	23 cb                	and    %ebx,%ecx
40abcb:	74 2a                	je     0x40abf7
40abcd:	81 f9 00 20 00 00    	cmp    $0x2000,%ecx
40abd3:	74 1c                	je     0x40abf1
40abd5:	81 f9 00 40 00 00    	cmp    $0x4000,%ecx
40abdb:	74 0c                	je     0x40abe9
40abdd:	3b cb                	cmp    %ebx,%ecx
40abdf:	75 16                	jne    0x40abf7
40abe1:	81 ce 00 03 00 00    	or     $0x300,%esi
40abe7:	eb 0e                	jmp    0x40abf7
40abe9:	81 ce 00 02 00 00    	or     $0x200,%esi
40abef:	eb 06                	jmp    0x40abf7
40abf1:	81 ce 00 01 00 00    	or     $0x100,%esi
40abf7:	bf 40 80 00 00       	mov    $0x8040,%edi
40abfc:	23 c7                	and    %edi,%eax
40abfe:	83 e8 40             	sub    $0x40,%eax
40ac01:	74 1c                	je     0x40ac1f
40ac03:	2d c0 7f 00 00       	sub    $0x7fc0,%eax
40ac08:	74 0d                	je     0x40ac17
40ac0a:	83 e8 40             	sub    $0x40,%eax
40ac0d:	75 16                	jne    0x40ac25
40ac0f:	81 ce 00 00 00 01    	or     $0x1000000,%esi
40ac15:	eb 0e                	jmp    0x40ac25
40ac17:	81 ce 00 00 00 03    	or     $0x3000000,%esi
40ac1d:	eb 06                	jmp    0x40ac25
40ac1f:	81 ce 00 00 00 02    	or     $0x2000000,%esi
40ac25:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ac28:	8b d0                	mov    %eax,%edx
40ac2a:	23 45 08             	and    0x8(%ebp),%eax
40ac2d:	f7 d2                	not    %edx
40ac2f:	23 d6                	and    %esi,%edx
40ac31:	0b d0                	or     %eax,%edx
40ac33:	3b d6                	cmp    %esi,%edx
40ac35:	75 07                	jne    0x40ac3e
40ac37:	8b c6                	mov    %esi,%eax
40ac39:	e9 b0 00 00 00       	jmp    0x40acee
40ac3e:	e8 16 fd ff ff       	call   0x40a959
40ac43:	50                   	push   %eax
40ac44:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ac47:	e8 53 8c ff ff       	call   0x40389f
40ac4c:	59                   	pop    %ecx
40ac4d:	0f ae 5d f4          	stmxcsr -0xc(%ebp)
40ac51:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ac54:	33 d2                	xor    %edx,%edx
40ac56:	84 c9                	test   %cl,%cl
40ac58:	79 03                	jns    0x40ac5d
40ac5a:	6a 10                	push   $0x10
40ac5c:	5a                   	pop    %edx
40ac5d:	f7 c1 00 02 00 00    	test   $0x200,%ecx
40ac63:	74 03                	je     0x40ac68
40ac65:	83 ca 08             	or     $0x8,%edx
40ac68:	f7 c1 00 04 00 00    	test   $0x400,%ecx
40ac6e:	74 03                	je     0x40ac73
40ac70:	83 ca 04             	or     $0x4,%edx
40ac73:	f7 c1 00 08 00 00    	test   $0x800,%ecx
40ac79:	74 03                	je     0x40ac7e
40ac7b:	83 ca 02             	or     $0x2,%edx
40ac7e:	f7 c1 00 10 00 00    	test   $0x1000,%ecx
40ac84:	74 03                	je     0x40ac89
40ac86:	83 ca 01             	or     $0x1,%edx
40ac89:	be 00 01 00 00       	mov    $0x100,%esi
40ac8e:	85 ce                	test   %ecx,%esi
40ac90:	74 06                	je     0x40ac98
40ac92:	81 ca 00 00 08 00    	or     $0x80000,%edx
40ac98:	8b c1                	mov    %ecx,%eax
40ac9a:	23 c3                	and    %ebx,%eax
40ac9c:	74 24                	je     0x40acc2
40ac9e:	3d 00 20 00 00       	cmp    $0x2000,%eax
40aca3:	74 1b                	je     0x40acc0
40aca5:	3d 00 40 00 00       	cmp    $0x4000,%eax
40acaa:	74 0c                	je     0x40acb8
40acac:	3b c3                	cmp    %ebx,%eax
40acae:	75 12                	jne    0x40acc2
40acb0:	81 ca 00 03 00 00    	or     $0x300,%edx
40acb6:	eb 0a                	jmp    0x40acc2
40acb8:	81 ca 00 02 00 00    	or     $0x200,%edx
40acbe:	eb 02                	jmp    0x40acc2
40acc0:	0b d6                	or     %esi,%edx
40acc2:	23 cf                	and    %edi,%ecx
40acc4:	83 e9 40             	sub    $0x40,%ecx
40acc7:	74 1d                	je     0x40ace6
40acc9:	81 e9 c0 7f 00 00    	sub    $0x7fc0,%ecx
40accf:	74 0d                	je     0x40acde
40acd1:	83 e9 40             	sub    $0x40,%ecx
40acd4:	75 16                	jne    0x40acec
40acd6:	81 ca 00 00 00 01    	or     $0x1000000,%edx
40acdc:	eb 0e                	jmp    0x40acec
40acde:	81 ca 00 00 00 03    	or     $0x3000000,%edx
40ace4:	eb 06                	jmp    0x40acec
40ace6:	81 ca 00 00 00 02    	or     $0x2000000,%edx
40acec:	8b c2                	mov    %edx,%eax
40acee:	8b c8                	mov    %eax,%ecx
40acf0:	33 4d 0c             	xor    0xc(%ebp),%ecx
40acf3:	0b 45 0c             	or     0xc(%ebp),%eax
40acf6:	f7 c1 1f 03 08 00    	test   $0x8031f,%ecx
40acfc:	74 05                	je     0x40ad03
40acfe:	0d 00 00 00 80       	or     $0x80000000,%eax
40ad03:	5f                   	pop    %edi
40ad04:	5e                   	pop    %esi
40ad05:	5b                   	pop    %ebx
40ad06:	c9                   	leave
40ad07:	c3                   	ret
40ad08:	cc                   	int3
40ad09:	cc                   	int3
40ad0a:	cc                   	int3
40ad0b:	cc                   	int3
40ad0c:	cc                   	int3
40ad0d:	cc                   	int3
40ad0e:	cc                   	int3
40ad0f:	cc                   	int3
40ad10:	51                   	push   %ecx
40ad11:	8d 4c 24 04          	lea    0x4(%esp),%ecx
40ad15:	2b c8                	sub    %eax,%ecx
40ad17:	1b c0                	sbb    %eax,%eax
40ad19:	f7 d0                	not    %eax
40ad1b:	23 c8                	and    %eax,%ecx
40ad1d:	8b c4                	mov    %esp,%eax
40ad1f:	25 00 f0 ff ff       	and    $0xfffff000,%eax
40ad24:	3b c8                	cmp    %eax,%ecx
40ad26:	72 0a                	jb     0x40ad32
40ad28:	8b c1                	mov    %ecx,%eax
40ad2a:	59                   	pop    %ecx
40ad2b:	94                   	xchg   %eax,%esp
40ad2c:	8b 00                	mov    (%eax),%eax
40ad2e:	89 04 24             	mov    %eax,(%esp)
40ad31:	c3                   	ret
40ad32:	2d 00 10 00 00       	sub    $0x1000,%eax
40ad37:	85 00                	test   %eax,(%eax)
40ad39:	eb e9                	jmp    0x40ad24
40ad3b:	8b ff                	mov    %edi,%edi
40ad3d:	55                   	push   %ebp
40ad3e:	8b ec                	mov    %esp,%ebp
40ad40:	83 ec 14             	sub    $0x14,%esp
40ad43:	56                   	push   %esi
40ad44:	57                   	push   %edi
40ad45:	ff 75 08             	push   0x8(%ebp)
40ad48:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40ad4b:	e8 7e 98 ff ff       	call   0x4045ce
40ad50:	8b 45 10             	mov    0x10(%ebp),%eax
40ad53:	8b 75 0c             	mov    0xc(%ebp),%esi
40ad56:	33 ff                	xor    %edi,%edi
40ad58:	3b c7                	cmp    %edi,%eax
40ad5a:	74 02                	je     0x40ad5e
40ad5c:	89 30                	mov    %esi,(%eax)
40ad5e:	3b f7                	cmp    %edi,%esi
40ad60:	75 2c                	jne    0x40ad8e
40ad62:	e8 e5 80 ff ff       	call   0x402e4c
40ad67:	57                   	push   %edi
40ad68:	57                   	push   %edi
40ad69:	57                   	push   %edi
40ad6a:	57                   	push   %edi
40ad6b:	57                   	push   %edi
40ad6c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ad72:	e8 ca 8e ff ff       	call   0x403c41
40ad77:	83 c4 14             	add    $0x14,%esp
40ad7a:	80 7d f8 00          	cmpb   $0x0,-0x8(%ebp)
40ad7e:	74 07                	je     0x40ad87
40ad80:	8b 45 f4             	mov    -0xc(%ebp),%eax
40ad83:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40ad87:	33 c0                	xor    %eax,%eax
40ad89:	e9 d8 01 00 00       	jmp    0x40af66
40ad8e:	39 7d 14             	cmp    %edi,0x14(%ebp)
40ad91:	74 0c                	je     0x40ad9f
40ad93:	83 7d 14 02          	cmpl   $0x2,0x14(%ebp)
40ad97:	7c c9                	jl     0x40ad62
40ad99:	83 7d 14 24          	cmpl   $0x24,0x14(%ebp)
40ad9d:	7f c3                	jg     0x40ad62
40ad9f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40ada2:	53                   	push   %ebx
40ada3:	8a 1e                	mov    (%esi),%bl
40ada5:	89 7d fc             	mov    %edi,-0x4(%ebp)
40ada8:	8d 7e 01             	lea    0x1(%esi),%edi
40adab:	83 b9 ac 00 00 00 01 	cmpl   $0x1,0xac(%ecx)
40adb2:	7e 17                	jle    0x40adcb
40adb4:	8d 45 ec             	lea    -0x14(%ebp),%eax
40adb7:	50                   	push   %eax
40adb8:	0f b6 c3             	movzbl %bl,%eax
40adbb:	6a 08                	push   $0x8
40adbd:	50                   	push   %eax
40adbe:	e8 2e dd ff ff       	call   0x408af1
40adc3:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40adc6:	83 c4 0c             	add    $0xc,%esp
40adc9:	eb 10                	jmp    0x40addb
40adcb:	8b 91 c8 00 00 00    	mov    0xc8(%ecx),%edx
40add1:	0f b6 c3             	movzbl %bl,%eax
40add4:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
40add8:	83 e0 08             	and    $0x8,%eax
40addb:	85 c0                	test   %eax,%eax
40addd:	74 05                	je     0x40ade4
40addf:	8a 1f                	mov    (%edi),%bl
40ade1:	47                   	inc    %edi
40ade2:	eb c7                	jmp    0x40adab
40ade4:	80 fb 2d             	cmp    $0x2d,%bl
40ade7:	75 06                	jne    0x40adef
40ade9:	83 4d 18 02          	orl    $0x2,0x18(%ebp)
40aded:	eb 05                	jmp    0x40adf4
40adef:	80 fb 2b             	cmp    $0x2b,%bl
40adf2:	75 03                	jne    0x40adf7
40adf4:	8a 1f                	mov    (%edi),%bl
40adf6:	47                   	inc    %edi
40adf7:	8b 45 14             	mov    0x14(%ebp),%eax
40adfa:	85 c0                	test   %eax,%eax
40adfc:	0f 8c 4b 01 00 00    	jl     0x40af4d
40ae02:	83 f8 01             	cmp    $0x1,%eax
40ae05:	0f 84 42 01 00 00    	je     0x40af4d
40ae0b:	83 f8 24             	cmp    $0x24,%eax
40ae0e:	0f 8f 39 01 00 00    	jg     0x40af4d
40ae14:	85 c0                	test   %eax,%eax
40ae16:	75 2a                	jne    0x40ae42
40ae18:	80 fb 30             	cmp    $0x30,%bl