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
40b18e:	03 c7                	add    %edi,%eax
40b190:	50                   	push   %eax
40b191:	33 c0                	xor    %eax,%eax
40b193:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40b197:	51                   	push   %ecx
40b198:	0f 94 c0             	sete   %al
40b19b:	03 c6                	add    %esi,%eax
40b19d:	50                   	push   %eax
40b19e:	e8 f5 68 00 00       	call   0x411a98
40b1a3:	83 c4 10             	add    $0x10,%esp
40b1a6:	85 c0                	test   %eax,%eax
40b1a8:	74 05                	je     0x40b1af
40b1aa:	c6 06 00             	movb   $0x0,(%esi)
40b1ad:	eb 16                	jmp    0x40b1c5
40b1af:	ff 75 20             	push   0x20(%ebp)
40b1b2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b1b5:	6a 00                	push   $0x0
40b1b7:	50                   	push   %eax
40b1b8:	57                   	push   %edi
40b1b9:	ff 75 10             	push   0x10(%ebp)
40b1bc:	56                   	push   %esi
40b1bd:	e8 09 00 00 00       	call   0x40b1cb
40b1c2:	83 c4 18             	add    $0x18,%esp
40b1c5:	5f                   	pop    %edi
40b1c6:	5e                   	pop    %esi
40b1c7:	8b e5                	mov    %ebp,%esp
40b1c9:	5d                   	pop    %ebp
40b1ca:	c3                   	ret
40b1cb:	8b ff                	mov    %edi,%edi
40b1cd:	55                   	push   %ebp
40b1ce:	8b ec                	mov    %esp,%ebp
40b1d0:	83 ec 10             	sub    $0x10,%esp
40b1d3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b1d6:	53                   	push   %ebx
40b1d7:	56                   	push   %esi
40b1d8:	57                   	push   %edi
40b1d9:	ff 75 1c             	push   0x1c(%ebp)
40b1dc:	e8 d0 a4 ff ff       	call   0x4056b1
40b1e1:	8b 55 14             	mov    0x14(%ebp),%edx
40b1e4:	8b 7d 10             	mov    0x10(%ebp),%edi
40b1e7:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b1ea:	8b 4a 04             	mov    0x4(%edx),%ecx
40b1ed:	49                   	dec    %ecx
40b1ee:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40b1f2:	74 14                	je     0x40b208
40b1f4:	3b cf                	cmp    %edi,%ecx
40b1f6:	75 10                	jne    0x40b208
40b1f8:	33 c0                	xor    %eax,%eax
40b1fa:	83 3a 2d             	cmpl   $0x2d,(%edx)
40b1fd:	0f 94 c0             	sete   %al
40b200:	03 c1                	add    %ecx,%eax
40b202:	66 c7 04 18 30 00    	movw   $0x30,(%eax,%ebx,1)
40b208:	83 3a 2d             	cmpl   $0x2d,(%edx)
40b20b:	8b f3                	mov    %ebx,%esi
40b20d:	75 06                	jne    0x40b215
40b20f:	c6 03 2d             	movb   $0x2d,(%ebx)
40b212:	8d 73 01             	lea    0x1(%ebx),%esi
40b215:	8b 42 04             	mov    0x4(%edx),%eax
40b218:	85 c0                	test   %eax,%eax
40b21a:	7f 15                	jg     0x40b231
40b21c:	6a 01                	push   $0x1
40b21e:	56                   	push   %esi
40b21f:	ff 75 0c             	push   0xc(%ebp)
40b222:	53                   	push   %ebx
40b223:	e8 3a 02 00 00       	call   0x40b462
40b228:	83 c4 10             	add    $0x10,%esp
40b22b:	c6 06 30             	movb   $0x30,(%esi)
40b22e:	46                   	inc    %esi
40b22f:	eb 02                	jmp    0x40b233
40b231:	03 f0                	add    %eax,%esi
40b233:	85 ff                	test   %edi,%edi
40b235:	7e 52                	jle    0x40b289
40b237:	6a 01                	push   $0x1
40b239:	56                   	push   %esi
40b23a:	ff 75 0c             	push   0xc(%ebp)
40b23d:	53                   	push   %ebx
40b23e:	e8 1f 02 00 00       	call   0x40b462
40b243:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b246:	83 c4 10             	add    $0x10,%esp
40b249:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40b24f:	8b 00                	mov    (%eax),%eax
40b251:	8a 00                	mov    (%eax),%al
40b253:	88 06                	mov    %al,(%esi)
40b255:	46                   	inc    %esi
40b256:	8b 45 14             	mov    0x14(%ebp),%eax
40b259:	8b 48 04             	mov    0x4(%eax),%ecx
40b25c:	85 c9                	test   %ecx,%ecx
40b25e:	79 29                	jns    0x40b289
40b260:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40b264:	75 08                	jne    0x40b26e
40b266:	8b c1                	mov    %ecx,%eax
40b268:	f7 d8                	neg    %eax
40b26a:	3b c7                	cmp    %edi,%eax
40b26c:	7d 04                	jge    0x40b272
40b26e:	8b f9                	mov    %ecx,%edi
40b270:	f7 df                	neg    %edi
40b272:	57                   	push   %edi
40b273:	56                   	push   %esi
40b274:	ff 75 0c             	push   0xc(%ebp)
40b277:	53                   	push   %ebx
40b278:	e8 e5 01 00 00       	call   0x40b462
40b27d:	57                   	push   %edi
40b27e:	6a 30                	push   $0x30
40b280:	56                   	push   %esi
40b281:	e8 da 97 ff ff       	call   0x404a60
40b286:	83 c4 1c             	add    $0x1c,%esp
40b289:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b28d:	5f                   	pop    %edi
40b28e:	5e                   	pop    %esi
40b28f:	5b                   	pop    %ebx
40b290:	74 0a                	je     0x40b29c
40b292:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b295:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
40b29c:	33 c0                	xor    %eax,%eax
40b29e:	8b e5                	mov    %ebp,%esp
40b2a0:	5d                   	pop    %ebp
40b2a1:	c3                   	ret
40b2a2:	8b ff                	mov    %edi,%edi
40b2a4:	55                   	push   %ebp
40b2a5:	8b ec                	mov    %esp,%ebp
40b2a7:	83 ec 10             	sub    $0x10,%esp
40b2aa:	53                   	push   %ebx
40b2ab:	56                   	push   %esi
40b2ac:	57                   	push   %edi
40b2ad:	ff 75 18             	push   0x18(%ebp)
40b2b0:	33 c0                	xor    %eax,%eax
40b2b2:	8d 7d f0             	lea    -0x10(%ebp),%edi
40b2b5:	ff 75 14             	push   0x14(%ebp)
40b2b8:	ab                   	stos   %eax,%es:(%edi)
40b2b9:	ab                   	stos   %eax,%es:(%edi)
40b2ba:	ab                   	stos   %eax,%es:(%edi)
40b2bb:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b2be:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40b2c1:	50                   	push   %eax
40b2c2:	8b 45 08             	mov    0x8(%ebp),%eax
40b2c5:	57                   	push   %edi
40b2c6:	ff 70 04             	push   0x4(%eax)
40b2c9:	ff 30                	push   (%eax)
40b2cb:	e8 5e 6d 00 00       	call   0x41202e
40b2d0:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b2d3:	33 c9                	xor    %ecx,%ecx
40b2d5:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b2d8:	83 c4 18             	add    $0x18,%esp
40b2db:	83 7d f0 2d          	cmpl   $0x2d,-0x10(%ebp)
40b2df:	0f 94 c1             	sete   %cl
40b2e2:	48                   	dec    %eax
40b2e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b2e6:	83 c8 ff             	or     $0xffffffff,%eax
40b2e9:	8d 34 19             	lea    (%ecx,%ebx,1),%esi
40b2ec:	39 45 10             	cmp    %eax,0x10(%ebp)
40b2ef:	74 05                	je     0x40b2f6
40b2f1:	8b 45 10             	mov    0x10(%ebp),%eax
40b2f4:	2b c1                	sub    %ecx,%eax
40b2f6:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b2f9:	51                   	push   %ecx
40b2fa:	57                   	push   %edi
40b2fb:	50                   	push   %eax
40b2fc:	56                   	push   %esi
40b2fd:	e8 96 67 00 00       	call   0x411a98
40b302:	83 c4 10             	add    $0x10,%esp
40b305:	85 c0                	test   %eax,%eax
40b307:	74 05                	je     0x40b30e
40b309:	c6 03 00             	movb   $0x0,(%ebx)
40b30c:	eb 55                	jmp    0x40b363
40b30e:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b311:	48                   	dec    %eax
40b312:	39 45 fc             	cmp    %eax,-0x4(%ebp)
40b315:	0f 9c c1             	setl   %cl
40b318:	83 f8 fc             	cmp    $0xfffffffc,%eax
40b31b:	7c 2a                	jl     0x40b347
40b31d:	3b c7                	cmp    %edi,%eax
40b31f:	7d 26                	jge    0x40b347
40b321:	84 c9                	test   %cl,%cl
40b323:	74 0a                	je     0x40b32f
40b325:	8a 06                	mov    (%esi),%al