40ae57:	eb 03                	jmp    0x40ae5c
40ae59:	fe 40 ff             	incb   -0x1(%eax)
40ae5c:	85 ff                	test   %edi,%edi
40ae5e:	7e 10                	jle    0x40ae70
40ae60:	57                   	push   %edi
40ae61:	6a 30                	push   $0x30
40ae63:	58                   	pop    %eax
40ae64:	50                   	push   %eax
40ae65:	56                   	push   %esi
40ae66:	e8 f5 9b ff ff       	call   0x404a60
40ae6b:	83 c4 0c             	add    $0xc,%esp
40ae6e:	03 f7                	add    %edi,%esi
40ae70:	8b 45 e8             	mov    -0x18(%ebp),%eax
40ae73:	80 38 00             	cmpb   $0x0,(%eax)
40ae76:	75 02                	jne    0x40ae7a
40ae78:	8b f0                	mov    %eax,%esi
40ae7a:	80 7d 20 00          	cmpb   $0x0,0x20(%ebp)
40ae7e:	b1 34                	mov    $0x34,%cl
40ae80:	8b 55 08             	mov    0x8(%ebp),%edx
40ae83:	0f 94 c0             	sete   %al
40ae86:	fe c8                	dec    %al
40ae88:	24 e0                	and    $0xe0,%al
40ae8a:	04 70                	add    $0x70,%al
40ae8c:	88 06                	mov    %al,(%esi)
40ae8e:	8b 02                	mov    (%edx),%eax
40ae90:	8b 52 04             	mov    0x4(%edx),%edx
40ae93:	e8 e8 d4 00 00       	call   0x418380
40ae98:	8b c8                	mov    %eax,%ecx
40ae9a:	33 db                	xor    %ebx,%ebx
40ae9c:	81 e1 ff 07 00 00    	and    $0x7ff,%ecx
40aea2:	2b 4d f4             	sub    -0xc(%ebp),%ecx
40aea5:	1b db                	sbb    %ebx,%ebx
40aea7:	78 0f                	js     0x40aeb8
40aea9:	7f 04                	jg     0x40aeaf
40aeab:	85 c9                	test   %ecx,%ecx
40aead:	72 09                	jb     0x40aeb8
40aeaf:	c6 46 01 2b          	movb   $0x2b,0x1(%esi)
40aeb3:	83 c6 02             	add    $0x2,%esi
40aeb6:	eb 0e                	jmp    0x40aec6
40aeb8:	c6 46 01 2d          	movb   $0x2d,0x1(%esi)
40aebc:	83 c6 02             	add    $0x2,%esi
40aebf:	f7 d9                	neg    %ecx
40aec1:	83 d3 00             	adc    $0x0,%ebx
40aec4:	f7 db                	neg    %ebx
40aec6:	8b fe                	mov    %esi,%edi
40aec8:	6a 30                	push   $0x30
40aeca:	58                   	pop    %eax
40aecb:	88 06                	mov    %al,(%esi)
40aecd:	85 db                	test   %ebx,%ebx
40aecf:	7c 3f                	jl     0x40af10
40aed1:	b8 e8 03 00 00       	mov    $0x3e8,%eax
40aed6:	7f 04                	jg     0x40aedc
40aed8:	3b c8                	cmp    %eax,%ecx
40aeda:	72 16                	jb     0x40aef2
40aedc:	6a 00                	push   $0x0
40aede:	50                   	push   %eax
40aedf:	53                   	push   %ebx
40aee0:	51                   	push   %ecx
40aee1:	e8 1a d3 00 00       	call   0x418200
40aee6:	04 30                	add    $0x30,%al
40aee8:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40aeeb:	88 06                	mov    %al,(%esi)
40aeed:	46                   	inc    %esi
40aeee:	3b f7                	cmp    %edi,%esi
40aef0:	75 0b                	jne    0x40aefd
40aef2:	85 db                	test   %ebx,%ebx
40aef4:	7c 1a                	jl     0x40af10
40aef6:	7f 05                	jg     0x40aefd
40aef8:	83 f9 64             	cmp    $0x64,%ecx
40aefb:	72 13                	jb     0x40af10
40aefd:	6a 00                	push   $0x0
40aeff:	6a 64                	push   $0x64
40af01:	53                   	push   %ebx
40af02:	51                   	push   %ecx
40af03:	e8 f8 d2 00 00       	call   0x418200
40af08:	04 30                	add    $0x30,%al
40af0a:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40af0d:	88 06                	mov    %al,(%esi)
40af0f:	46                   	inc    %esi
40af10:	3b f7                	cmp    %edi,%esi
40af12:	75 0b                	jne    0x40af1f
40af14:	85 db                	test   %ebx,%ebx
40af16:	7c 1a                	jl     0x40af32
40af18:	7f 05                	jg     0x40af1f
40af1a:	83 f9 0a             	cmp    $0xa,%ecx
40af1d:	72 13                	jb     0x40af32
40af1f:	6a 00                	push   $0x0
40af21:	6a 0a                	push   $0xa
40af23:	53                   	push   %ebx
40af24:	51                   	push   %ecx
40af25:	e8 d6 d2 00 00       	call   0x418200
40af2a:	04 30                	add    $0x30,%al
40af2c:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40af2f:	88 06                	mov    %al,(%esi)
40af31:	46                   	inc    %esi
40af32:	6a 30                	push   $0x30
40af34:	58                   	pop    %eax
40af35:	02 c8                	add    %al,%cl
40af37:	33 ff                	xor    %edi,%edi
40af39:	88 0e                	mov    %cl,(%esi)
40af3b:	c6 46 01 00          	movb   $0x0,0x1(%esi)
40af3f:	80 7d dc 00          	cmpb   $0x0,-0x24(%ebp)
40af43:	74 0a                	je     0x40af4f
40af45:	8b 4d d0             	mov    -0x30(%ebp),%ecx
40af48:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40af4f:	8b c7                	mov    %edi,%eax
40af51:	5f                   	pop    %edi
40af52:	5e                   	pop    %esi
40af53:	5b                   	pop    %ebx
40af54:	8b e5                	mov    %ebp,%esp
40af56:	5d                   	pop    %ebp
40af57:	c3                   	ret
40af58:	8b ff                	mov    %edi,%edi
40af5a:	55                   	push   %ebp
40af5b:	8b ec                	mov    %esp,%ebp
40af5d:	83 ec 0c             	sub    $0xc,%esp
40af60:	8d 45 f4             	lea    -0xc(%ebp),%eax
40af63:	56                   	push   %esi
40af64:	8b 75 1c             	mov    0x1c(%ebp),%esi
40af67:	57                   	push   %edi
40af68:	ff 75 18             	push   0x18(%ebp)
40af6b:	ff 75 14             	push   0x14(%ebp)
40af6e:	8d 7e 01             	lea    0x1(%esi),%edi
40af71:	50                   	push   %eax
40af72:	8b 45 08             	mov    0x8(%ebp),%eax
40af75:	57                   	push   %edi
40af76:	ff 70 04             	push   0x4(%eax)
40af79:	ff 30                	push   (%eax)
40af7b:	e8 ae 70 00 00       	call   0x41202e
40af80:	83 c9 ff             	or     $0xffffffff,%ecx
40af83:	83 c4 18             	add    $0x18,%esp
40af86:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40af89:	74 17                	je     0x40afa2
40af8b:	8b 4d 10             	mov    0x10(%ebp),%ecx
40af8e:	33 c0                	xor    %eax,%eax
40af90:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40af94:	0f 94 c0             	sete   %al
40af97:	2b c8                	sub    %eax,%ecx
40af99:	33 c0                	xor    %eax,%eax
40af9b:	85 f6                	test   %esi,%esi
40af9d:	0f 9f c0             	setg   %al
40afa0:	2b c8                	sub    %eax,%ecx
40afa2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40afa5:	50                   	push   %eax
40afa6:	57                   	push   %edi
40afa7:	8b 7d 0c             	mov    0xc(%ebp),%edi
40afaa:	51                   	push   %ecx
40afab:	33 c9                	xor    %ecx,%ecx
40afad:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40afb1:	0f 94 c1             	sete   %cl
40afb4:	33 c0                	xor    %eax,%eax
40afb6:	85 f6                	test   %esi,%esi
40afb8:	0f 9f c0             	setg   %al
40afbb:	03 cf                	add    %edi,%ecx
40afbd:	03 c1                	add    %ecx,%eax
40afbf:	50                   	push   %eax
40afc0:	e8 d3 6a 00 00       	call   0x411a98
40afc5:	83 c4 10             	add    $0x10,%esp
40afc8:	85 c0                	test   %eax,%eax
40afca:	74 05                	je     0x40afd1
40afcc:	c6 07 00             	movb   $0x0,(%edi)
40afcf:	eb 1c                	jmp    0x40afed
40afd1:	ff 75 28             	push   0x28(%ebp)
40afd4:	8d 45 f4             	lea    -0xc(%ebp),%eax
40afd7:	6a 00                	push   $0x0
40afd9:	50                   	push   %eax
40afda:	ff 75 24             	push   0x24(%ebp)
40afdd:	ff 75 20             	push   0x20(%ebp)
40afe0:	56                   	push   %esi
40afe1:	ff 75 10             	push   0x10(%ebp)
40afe4:	57                   	push   %edi
40afe5:	e8 09 00 00 00       	call   0x40aff3
40afea:	83 c4 20             	add    $0x20,%esp
40afed:	5f                   	pop    %edi
40afee:	5e                   	pop    %esi
40afef:	8b e5                	mov    %ebp,%esp
40aff1:	5d                   	pop    %ebp
40aff2:	c3                   	ret
40aff3:	8b ff                	mov    %edi,%edi
40aff5:	55                   	push   %ebp
40aff6:	8b ec                	mov    %esp,%ebp
40aff8:	83 ec 10             	sub    $0x10,%esp
40affb:	56                   	push   %esi
40affc:	57                   	push   %edi
40affd:	8b 7d 10             	mov    0x10(%ebp),%edi
40b000:	85 ff                	test   %edi,%edi
40b002:	7e 04                	jle    0x40b008
40b004:	8b c7                	mov    %edi,%eax
40b006:	eb 02                	jmp    0x40b00a
40b008:	33 c0                	xor    %eax,%eax
40b00a:	83 c0 09             	add    $0x9,%eax
40b00d:	39 45 0c             	cmp    %eax,0xc(%ebp)
40b010:	77 17                	ja     0x40b029
40b012:	e8 f0 cc ff ff       	call   0x407d07
40b017:	6a 22                	push   $0x22
40b019:	5e                   	pop    %esi
40b01a:	89 30                	mov    %esi,(%eax)
40b01c:	e8 0d cc ff ff       	call   0x407c2e
40b021:	8b c6                	mov    %esi,%eax
40b023:	5f                   	pop    %edi
40b024:	5e                   	pop    %esi
40b025:	8b e5                	mov    %ebp,%esp
40b027:	5d                   	pop    %ebp
40b028:	c3                   	ret
40b029:	53                   	push   %ebx
40b02a:	ff 75 24             	push   0x24(%ebp)
40b02d:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b030:	e8 7c a6 ff ff       	call   0x4056b1
40b035:	8a 55 20             	mov    0x20(%ebp),%dl
40b038:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b03b:	84 d2                	test   %dl,%dl
40b03d:	74 25                	je     0x40b064
40b03f:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40b042:	33 c0                	xor    %eax,%eax
40b044:	85 ff                	test   %edi,%edi
40b046:	0f 9f c0             	setg   %al
40b049:	50                   	push   %eax
40b04a:	33 c0                	xor    %eax,%eax
40b04c:	83 39 2d             	cmpl   $0x2d,(%ecx)
40b04f:	0f 94 c0             	sete   %al
40b052:	03 c3                	add    %ebx,%eax
40b054:	50                   	push   %eax
40b055:	ff 75 0c             	push   0xc(%ebp)
40b058:	53                   	push   %ebx
40b059:	e8 04 04 00 00       	call   0x40b462
40b05e:	8a 55 20             	mov    0x20(%ebp),%dl
40b061:	83 c4 10             	add    $0x10,%esp
40b064:	8b 45 1c             	mov    0x1c(%ebp),%eax
40b067:	8b f3                	mov    %ebx,%esi
40b069:	83 38 2d             	cmpl   $0x2d,(%eax)
40b06c:	75 06                	jne    0x40b074
40b06e:	c6 03 2d             	movb   $0x2d,(%ebx)
40b071:	8d 73 01             	lea    0x1(%ebx),%esi
40b074:	85 ff                	test   %edi,%edi
40b076:	7e 15                	jle    0x40b08d
40b078:	8a 46 01             	mov    0x1(%esi),%al
40b07b:	88 06                	mov    %al,(%esi)
40b07d:	46                   	inc    %esi
40b07e:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b081:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40b087:	8b 00                	mov    (%eax),%eax
40b089:	8a 00                	mov    (%eax),%al
40b08b:	88 06                	mov    %al,(%esi)
40b08d:	33 c0                	xor    %eax,%eax
40b08f:	84 d2                	test   %dl,%dl
40b091:	0f 94 c0             	sete   %al
40b094:	03 c7                	add    %edi,%eax
40b096:	03 f0                	add    %eax,%esi
40b098:	83 c8 ff             	or     $0xffffffff,%eax
40b09b:	39 45 0c             	cmp    %eax,0xc(%ebp)
40b09e:	74 07                	je     0x40b0a7
40b0a0:	8b c3                	mov    %ebx,%eax
40b0a2:	2b c6                	sub    %esi,%eax
40b0a4:	03 45 0c             	add    0xc(%ebp),%eax
40b0a7:	68 18 c0 41 00       	push   $0x41c018
40b0ac:	50                   	push   %eax
40b0ad:	56                   	push   %esi
40b0ae:	e8 d4 e6 ff ff       	call   0x409787
40b0b3:	83 c4 0c             	add    $0xc,%esp
40b0b6:	5b                   	pop    %ebx
40b0b7:	85 c0                	test   %eax,%eax
40b0b9:	75 76                	jne    0x40b131
40b0bb:	8d 4e 02             	lea    0x2(%esi),%ecx
40b0be:	38 45 14             	cmp    %al,0x14(%ebp)
40b0c1:	74 03                	je     0x40b0c6
40b0c3:	c6 06 45             	movb   $0x45,(%esi)
40b0c6:	8b 55 1c             	mov    0x1c(%ebp),%edx
40b0c9:	8b 42 08             	mov    0x8(%edx),%eax
40b0cc:	80 38 30             	cmpb   $0x30,(%eax)
40b0cf:	74 2f                	je     0x40b100
40b0d1:	8b 52 04             	mov    0x4(%edx),%edx
40b0d4:	83 ea 01             	sub    $0x1,%edx
40b0d7:	79 06                	jns    0x40b0df
40b0d9:	f7 da                	neg    %edx
40b0db:	c6 46 01 2d          	movb   $0x2d,0x1(%esi)
40b0df:	6a 64                	push   $0x64
40b0e1:	5f                   	pop    %edi
40b0e2:	3b d7                	cmp    %edi,%edx
40b0e4:	7c 08                	jl     0x40b0ee
40b0e6:	8b c2                	mov    %edx,%eax
40b0e8:	99                   	cltd
40b0e9:	f7 ff                	idiv   %edi
40b0eb:	00 46 02             	add    %al,0x2(%esi)
40b0ee:	6a 0a                	push   $0xa
40b0f0:	5f                   	pop    %edi
40b0f1:	3b d7                	cmp    %edi,%edx
40b0f3:	7c 08                	jl     0x40b0fd
40b0f5:	8b c2                	mov    %edx,%eax
40b0f7:	99                   	cltd
40b0f8:	f7 ff                	idiv   %edi
40b0fa:	00 46 03             	add    %al,0x3(%esi)
40b0fd:	00 56 04             	add    %dl,0x4(%esi)
40b100:	83 7d 18 02          	cmpl   $0x2,0x18(%ebp)
40b104:	75 14                	jne    0x40b11a
40b106:	80 39 30             	cmpb   $0x30,(%ecx)
40b109:	75 0f                	jne    0x40b11a
40b10b:	6a 03                	push   $0x3
40b10d:	8d 41 01             	lea    0x1(%ecx),%eax
40b110:	50                   	push   %eax
40b111:	51                   	push   %ecx
40b112:	e8 89 8d ff ff       	call   0x403ea0
40b117:	83 c4 0c             	add    $0xc,%esp
40b11a:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b11e:	74 0a                	je     0x40b12a
40b120:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b123:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
40b12a:	33 c0                	xor    %eax,%eax
40b12c:	e9 f2 fe ff ff       	jmp    0x40b023
40b131:	33 c0                	xor    %eax,%eax
40b133:	50                   	push   %eax
40b134:	50                   	push   %eax
40b135:	50                   	push   %eax
40b136:	50                   	push   %eax
40b137:	50                   	push   %eax
40b138:	e8 1e cb ff ff       	call   0x407c5b
40b13d:	cc                   	int3
40b13e:	8b ff                	mov    %edi,%edi
40b140:	55                   	push   %ebp
40b141:	8b ec                	mov    %esp,%ebp
40b143:	83 ec 0c             	sub    $0xc,%esp
40b146:	33 c0                	xor    %eax,%eax
40b148:	56                   	push   %esi
40b149:	57                   	push   %edi
40b14a:	ff 75 18             	push   0x18(%ebp)
40b14d:	8d 7d f4             	lea    -0xc(%ebp),%edi
40b150:	ff 75 14             	push   0x14(%ebp)
40b153:	ab                   	stos   %eax,%es:(%edi)
40b154:	ab                   	stos   %eax,%es:(%edi)
40b155:	ab                   	stos   %eax,%es:(%edi)
40b156:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b159:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40b15c:	50                   	push   %eax
40b15d:	8b 45 08             	mov    0x8(%ebp),%eax
40b160:	57                   	push   %edi
40b161:	ff 70 04             	push   0x4(%eax)
40b164:	ff 30                	push   (%eax)
40b166:	e8 c3 6e 00 00       	call   0x41202e
40b16b:	83 c9 ff             	or     $0xffffffff,%ecx
40b16e:	83 c4 18             	add    $0x18,%esp
40b171:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40b174:	74 0e                	je     0x40b184
40b176:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b179:	33 c0                	xor    %eax,%eax
40b17b:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40b17f:	0f 94 c0             	sete   %al
40b182:	2b c8                	sub    %eax,%ecx
40b184:	8b 75 0c             	mov    0xc(%ebp),%esi
40b187:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b18a:	50                   	push   %eax
40b18b:	8b 45 f8             	mov    -0x8(%ebp),%eax