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
40aff2:	57                   	push   %edi
40aff3:	89 7c 24 10          	mov    %edi,0x10(%esp)
40aff7:	ff 15 74 20 41 00    	call   *0x412074
40affd:	85 f6                	test   %esi,%esi
40afff:	0f 84 f0 00 00 00    	je     0x40b0f5
40b005:	56                   	push   %esi
40b006:	ff 15 d4 20 41 00    	call   *0x4120d4
40b00c:	85 c0                	test   %eax,%eax
40b00e:	0f 84 e1 00 00 00    	je     0x40b0f5
40b014:	8d 44 24 0c          	lea    0xc(%esp),%eax
40b018:	50                   	push   %eax
40b019:	57                   	push   %edi
40b01a:	6a 04                	push   $0x4
40b01c:	ff 15 78 20 41 00    	call   *0x412078
40b022:	ff 15 48 20 41 00    	call   *0x412048
40b028:	3d ea 00 00 00       	cmp    $0xea,%eax
40b02d:	75 28                	jne    0x40b057
40b02f:	6a 01                	push   $0x1
40b031:	ff 74 24 10          	push   0x10(%esp)
40b035:	33 d2                	xor    %edx,%edx
40b037:	6a 0e                	push   $0xe
40b039:	59                   	pop    %ecx
40b03a:	e8 64 e5 ff ff       	call   0x4095a3
40b03f:	8b d8                	mov    %eax,%ebx
40b041:	85 db                	test   %ebx,%ebx
40b043:	75 19                	jne    0x40b05e
40b045:	ff 15 48 20 41 00    	call   *0x412048
40b04b:	85 c0                	test   %eax,%eax
40b04d:	75 08                	jne    0x40b057
40b04f:	6a 08                	push   $0x8
40b051:	ff 15 74 20 41 00    	call   *0x412074
40b057:	33 c0                	xor    %eax,%eax
40b059:	e9 9a 00 00 00       	jmp    0x40b0f8
40b05e:	8d 44 24 0c          	lea    0xc(%esp),%eax
40b062:	50                   	push   %eax
40b063:	53                   	push   %ebx
40b064:	6a 04                	push   $0x4
40b066:	ff 15 78 20 41 00    	call   *0x412078
40b06c:	85 c0                	test   %eax,%eax
40b06e:	74 e7                	je     0x40b057
40b070:	57                   	push   %edi
40b071:	6a 01                	push   $0x1
40b073:	8b d6                	mov    %esi,%edx
40b075:	8b cb                	mov    %ebx,%ecx
40b077:	e8 1e f4 ff ff       	call   0x40a49a
40b07c:	85 c0                	test   %eax,%eax
40b07e:	74 75                	je     0x40b0f5
40b080:	8b ce                	mov    %esi,%ecx
40b082:	e8 71 01 00 00       	call   0x40b1f8
40b087:	83 f8 01             	cmp    $0x1,%eax
40b08a:	89 7c 24 0c          	mov    %edi,0xc(%esp)
40b08e:	8d 44 24 0c          	lea    0xc(%esp),%eax
40b092:	75 6b                	jne    0x40b0ff
40b094:	51                   	push   %ecx
40b095:	50                   	push   %eax
40b096:	33 d2                	xor    %edx,%edx
40b098:	8b ce                	mov    %esi,%ecx
40b09a:	e8 0c 02 00 00       	call   0x40b2ab
40b09f:	85 c0                	test   %eax,%eax
40b0a1:	74 b4                	je     0x40b057
40b0a3:	6a 01                	push   $0x1
40b0a5:	ff 74 24 10          	push   0x10(%esp)
40b0a9:	33 d2                	xor    %edx,%edx
40b0ab:	6a 0f                	push   $0xf
40b0ad:	59                   	pop    %ecx
40b0ae:	e8 f0 e4 ff ff       	call   0x4095a3
40b0b3:	8b f8                	mov    %eax,%edi
40b0b5:	85 ff                	test   %edi,%edi
40b0b7:	74 9e                	je     0x40b057
40b0b9:	51                   	push   %ecx
40b0ba:	8d 44 24 10          	lea    0x10(%esp),%eax
40b0be:	8b d7                	mov    %edi,%edx
40b0c0:	50                   	push   %eax
40b0c1:	8b ce                	mov    %esi,%ecx
40b0c3:	e8 e3 01 00 00       	call   0x40b2ab
40b0c8:	85 c0                	test   %eax,%eax
40b0ca:	74 8b                	je     0x40b057
40b0cc:	6a 00                	push   $0x0
40b0ce:	6a 01                	push   $0x1
40b0d0:	8b d7                	mov    %edi,%edx
40b0d2:	8b cb                	mov    %ebx,%ecx
40b0d4:	e8 c1 f3 ff ff       	call   0x40a49a
40b0d9:	85 c0                	test   %eax,%eax
40b0db:	74 18                	je     0x40b0f5
40b0dd:	ba 90 18 40 00       	mov    $0x401890,%edx
40b0e2:	6a 00                	push   $0x0
40b0e4:	6a 01                	push   $0x1
40b0e6:	8b cf                	mov    %edi,%ecx
40b0e8:	e8 ad f3 ff ff       	call   0x40a49a
40b0ed:	85 c0                	test   %eax,%eax
40b0ef:	0f 85 62 ff ff ff    	jne    0x40b057
40b0f5:	33 c0                	xor    %eax,%eax
40b0f7:	40                   	inc    %eax
40b0f8:	5f                   	pop    %edi
40b0f9:	5e                   	pop    %esi
40b0fa:	5b                   	pop    %ebx
40b0fb:	8b e5                	mov    %ebp,%esp
40b0fd:	5d                   	pop    %ebp
40b0fe:	c3                   	ret
40b0ff:	50                   	push   %eax
40b100:	57                   	push   %edi
40b101:	6a 07                	push   $0x7
40b103:	ff 15 78 20 41 00    	call   *0x412078
40b109:	ff 15 48 20 41 00    	call   *0x412048
40b10f:	3d ea 00 00 00       	cmp    $0xea,%eax
40b114:	0f 85 3d ff ff ff    	jne    0x40b057
40b11a:	6a 01                	push   $0x1
40b11c:	ff 74 24 10          	push   0x10(%esp)
40b120:	33 d2                	xor    %edx,%edx
40b122:	6a 0e                	push   $0xe
40b124:	59                   	pop    %ecx
40b125:	e8 79 e4 ff ff       	call   0x4095a3
40b12a:	8b f8                	mov    %eax,%edi
40b12c:	85 ff                	test   %edi,%edi
40b12e:	0f 84 23 ff ff ff    	je     0x40b057
40b134:	8d 44 24 0c          	lea    0xc(%esp),%eax
40b138:	50                   	push   %eax
40b139:	57                   	push   %edi
40b13a:	6a 07                	push   $0x7
40b13c:	ff 15 78 20 41 00    	call   *0x412078
40b142:	85 c0                	test   %eax,%eax
40b144:	0f 84 0d ff ff ff    	je     0x40b057
40b14a:	8b d6                	mov    %esi,%edx
40b14c:	eb 94                	jmp    0x40b0e2
40b14e:	8b ff                	mov    %edi,%edi
40b150:	55                   	push   %ebp
40b151:	8b ec                	mov    %esp,%ebp
40b153:	83 ec 44             	sub    $0x44,%esp
40b156:	a1 44 10 41 00       	mov    0x411044,%eax
40b15b:	33 c5                	xor    %ebp,%eax
40b15d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b160:	53                   	push   %ebx
40b161:	56                   	push   %esi
40b162:	57                   	push   %edi
40b163:	8b d9                	mov    %ecx,%ebx
40b165:	8d 7d c4             	lea    -0x3c(%ebp),%edi
40b168:	be a4 18 40 00       	mov    $0x4018a4,%esi
40b16d:	6a 0e                	push   $0xe
40b16f:	59                   	pop    %ecx
40b170:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40b172:	85 db                	test   %ebx,%ebx
40b174:	74 70                	je     0x40b1e6
40b176:	53                   	push   %ebx
40b177:	ff 15 d4 20 41 00    	call   *0x4120d4
40b17d:	85 c0                	test   %eax,%eax
40b17f:	74 65                	je     0x40b1e6
40b181:	8b cb                	mov    %ebx,%ecx
40b183:	e8 70 00 00 00       	call   0x40b1f8
40b188:	51                   	push   %ecx
40b189:	83 f8 01             	cmp    $0x1,%eax
40b18c:	75 3e                	jne    0x40b1cc
40b18e:	83 65 c0 00          	andl   $0x0,-0x40(%ebp)
40b192:	8d 45 c0             	lea    -0x40(%ebp),%eax
40b195:	50                   	push   %eax
40b196:	33 d2                	xor    %edx,%edx
40b198:	8b cb                	mov    %ebx,%ecx
40b19a:	e8 0c 01 00 00       	call   0x40b2ab
40b19f:	85 c0                	test   %eax,%eax
40b1a1:	74 25                	je     0x40b1c8
40b1a3:	6a 01                	push   $0x1
40b1a5:	ff 75 c0             	push   -0x40(%ebp)
40b1a8:	33 d2                	xor    %edx,%edx
40b1aa:	6a 0f                	push   $0xf
40b1ac:	59                   	pop    %ecx
40b1ad:	e8 f1 e3 ff ff       	call   0x4095a3
40b1b2:	85 c0                	test   %eax,%eax
40b1b4:	74 12                	je     0x40b1c8
40b1b6:	51                   	push   %ecx
40b1b7:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40b1ba:	8b d0                	mov    %eax,%edx
40b1bc:	51                   	push   %ecx
40b1bd:	8b cb                	mov    %ebx,%ecx
40b1bf:	e8 e7 00 00 00       	call   0x40b2ab
40b1c4:	85 c0                	test   %eax,%eax
40b1c6:	75 1e                	jne    0x40b1e6