409084:	8b 55 20             	mov    0x20(%ebp),%edx
409087:	89 45 a0             	mov    %eax,-0x60(%ebp)
40908a:	89 7d ac             	mov    %edi,-0x54(%ebp)
40908d:	89 55 a8             	mov    %edx,-0x58(%ebp)
409090:	85 db                	test   %ebx,%ebx
409092:	74 11                	je     0x4090a5
409094:	8a 02                	mov    (%edx),%al
409096:	3c 2b                	cmp    $0x2b,%al
409098:	74 04                	je     0x40909e
40909a:	3c 2d                	cmp    $0x2d,%al
40909c:	75 07                	jne    0x4090a5
40909e:	b9 01 00 00 00       	mov    $0x1,%ecx
4090a3:	eb 02                	jmp    0x4090a7
4090a5:	33 c9                	xor    %ecx,%ecx
4090a7:	8b 47 14             	mov    0x14(%edi),%eax
4090aa:	25 00 0e 00 00       	and    $0xe00,%eax
4090af:	89 4d b8             	mov    %ecx,-0x48(%ebp)
4090b2:	3d 00 08 00 00       	cmp    $0x800,%eax
4090b7:	75 1c                	jne    0x4090d5
4090b9:	8d 71 02             	lea    0x2(%ecx),%esi
4090bc:	3b f3                	cmp    %ebx,%esi
4090be:	77 15                	ja     0x4090d5
4090c0:	80 3c 0a 30          	cmpb   $0x30,(%edx,%ecx,1)
4090c4:	75 0f                	jne    0x4090d5
4090c6:	8a 44 0a 01          	mov    0x1(%edx,%ecx,1),%al
4090ca:	3c 78                	cmp    $0x78,%al
4090cc:	74 04                	je     0x4090d2
4090ce:	3c 58                	cmp    $0x58,%al
4090d0:	75 03                	jne    0x4090d5
4090d2:	89 75 b8             	mov    %esi,-0x48(%ebp)
4090d5:	8b 47 30             	mov    0x30(%edi),%eax
4090d8:	8b 78 04             	mov    0x4(%eax),%edi
4090db:	89 7d b4             	mov    %edi,-0x4c(%ebp)
4090de:	8b 07                	mov    (%edi),%eax
4090e0:	8b 70 04             	mov    0x4(%eax),%esi
4090e3:	8b ce                	mov    %esi,%ecx
4090e5:	ff 15 5c e2 43 00    	call   *0x43e25c
4090eb:	8b cf                	mov    %edi,%ecx
4090ed:	ff d6                	call   *%esi
4090ef:	8d 45 b0             	lea    -0x50(%ebp),%eax
4090f2:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
4090f9:	50                   	push   %eax
4090fa:	e8 e1 13 00 00       	call   0x40a4e0
4090ff:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
409106:	83 c4 04             	add    $0x4,%esp
409109:	8b 7d b4             	mov    -0x4c(%ebp),%edi
40910c:	89 45 bc             	mov    %eax,-0x44(%ebp)
40910f:	85 ff                	test   %edi,%edi
409111:	74 29                	je     0x40913c
409113:	8b 07                	mov    (%edi),%eax
409115:	8b 70 08             	mov    0x8(%eax),%esi
409118:	8b ce                	mov    %esi,%ecx
40911a:	ff 15 5c e2 43 00    	call   *0x43e25c
409120:	8b cf                	mov    %edi,%ecx
409122:	ff d6                	call   *%esi
409124:	8b f8                	mov    %eax,%edi
409126:	85 ff                	test   %edi,%edi
409128:	74 12                	je     0x40913c
40912a:	8b 07                	mov    (%edi),%eax
40912c:	6a 01                	push   $0x1
40912e:	8b 30                	mov    (%eax),%esi
409130:	8b ce                	mov    %esi,%ecx
409132:	ff 15 5c e2 43 00    	call   *0x43e25c
409138:	8b cf                	mov    %edi,%ecx
40913a:	ff d6                	call   *%esi
40913c:	6a 00                	push   $0x0
40913e:	53                   	push   %ebx
40913f:	8d 4d d8             	lea    -0x28(%ebp),%ecx
409142:	e8 d9 ec ff ff       	call   0x407e20
409147:	8b 7d bc             	mov    -0x44(%ebp),%edi
40914a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40914d:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
409154:	8b 55 a8             	mov    -0x58(%ebp),%edx
409157:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40915b:	8b 0f                	mov    (%edi),%ecx
40915d:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
409161:	50                   	push   %eax
409162:	8d 04 13             	lea    (%ebx,%edx,1),%eax
409165:	8b 71 2c             	mov    0x2c(%ecx),%esi
409168:	8b ce                	mov    %esi,%ecx
40916a:	50                   	push   %eax
40916b:	52                   	push   %edx
40916c:	ff 15 5c e2 43 00    	call   *0x43e25c
409172:	8b cf                	mov    %edi,%ecx
409174:	ff d6                	call   *%esi
409176:	8b 55 ac             	mov    -0x54(%ebp),%edx
409179:	8b 42 30             	mov    0x30(%edx),%eax
40917c:	8b 78 04             	mov    0x4(%eax),%edi
40917f:	89 7d a8             	mov    %edi,-0x58(%ebp)
409182:	8b 07                	mov    (%edi),%eax
409184:	8b 70 04             	mov    0x4(%eax),%esi
409187:	8b ce                	mov    %esi,%ecx
409189:	ff 15 5c e2 43 00    	call   *0x43e25c
40918f:	8b cf                	mov    %edi,%ecx
409191:	ff d6                	call   *%esi
409193:	8d 45 a4             	lea    -0x5c(%ebp),%eax
409196:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40919a:	50                   	push   %eax
40919b:	e8 00 12 00 00       	call   0x40a3a0
4091a0:	8b f8                	mov    %eax,%edi
4091a2:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4091a6:	8b 45 a8             	mov    -0x58(%ebp),%eax
4091a9:	83 c4 04             	add    $0x4,%esp
4091ac:	89 7d bc             	mov    %edi,-0x44(%ebp)
4091af:	85 c0                	test   %eax,%eax
4091b1:	74 2d                	je     0x4091e0
4091b3:	8b 00                	mov    (%eax),%eax
4091b5:	8b 70 08             	mov    0x8(%eax),%esi
4091b8:	8b ce                	mov    %esi,%ecx
4091ba:	ff 15 5c e2 43 00    	call   *0x43e25c
4091c0:	8b 4d a8             	mov    -0x58(%ebp),%ecx
4091c3:	ff d6                	call   *%esi
4091c5:	8b f8                	mov    %eax,%edi
4091c7:	85 ff                	test   %edi,%edi
4091c9:	74 12                	je     0x4091dd
4091cb:	8b 07                	mov    (%edi),%eax
4091cd:	6a 01                	push   $0x1
4091cf:	8b 30                	mov    (%eax),%esi
4091d1:	8b ce                	mov    %esi,%ecx
4091d3:	ff 15 5c e2 43 00    	call   *0x43e25c
4091d9:	8b cf                	mov    %edi,%ecx
4091db:	ff d6                	call   *%esi
4091dd:	8b 7d bc             	mov    -0x44(%ebp),%edi
4091e0:	8b 07                	mov    (%edi),%eax
4091e2:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4091e5:	51                   	push   %ecx
4091e6:	8b 70 14             	mov    0x14(%eax),%esi
4091e9:	8b ce                	mov    %esi,%ecx
4091eb:	ff 15 5c e2 43 00    	call   *0x43e25c
4091f1:	8b cf                	mov    %edi,%ecx
4091f3:	ff d6                	call   *%esi
4091f5:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
4091f9:	8d 7d c0             	lea    -0x40(%ebp),%edi
4091fc:	83 7d d4 10          	cmpl   $0x10,-0x2c(%ebp)
409200:	0f 43 7d c0          	cmovae -0x40(%ebp),%edi
409204:	8a 07                	mov    (%edi),%al
409206:	3c 7f                	cmp    $0x7f,%al
409208:	0f 84 be 00 00 00    	je     0x4092cc
40920e:	84 c0                	test   %al,%al
409210:	0f 8e b6 00 00 00    	jle    0x4092cc
409216:	8b 45 bc             	mov    -0x44(%ebp),%eax
409219:	8b 00                	mov    (%eax),%eax
40921b:	8b 70 10             	mov    0x10(%eax),%esi
40921e:	8b ce                	mov    %esi,%ecx
409220:	ff 15 5c e2 43 00    	call   *0x43e25c
409226:	8b 4d bc             	mov    -0x44(%ebp),%ecx
409229:	ff d6                	call   *%esi
40922b:	0f b7 f0             	movzwl %ax,%esi
40922e:	8a 07                	mov    (%edi),%al
409230:	89 75 bc             	mov    %esi,-0x44(%ebp)
409233:	3c 7f                	cmp    $0x7f,%al
409235:	0f 84 91 00 00 00    	je     0x4092cc
40923b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
409240:	8b 55 b8             	mov    -0x48(%ebp),%edx
409243:	84 c0                	test   %al,%al
409245:	0f 8e 84 00 00 00    	jle    0x4092cf
40924b:	0f be c8             	movsbl %al,%ecx
40924e:	8b c3                	mov    %ebx,%eax
409250:	2b c2                	sub    %edx,%eax
409252:	3b c8                	cmp    %eax,%ecx
409254:	73 79                	jae    0x4092cf
409256:	2b d9                	sub    %ecx,%ebx
409258:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40925b:	3b cb                	cmp    %ebx,%ecx
40925d:	0f 82 3d 02 00 00    	jb     0x4094a0
409263:	8b 55 ec             	mov    -0x14(%ebp),%edx
409266:	8b c2                	mov    %edx,%eax
409268:	2b c1                	sub    %ecx,%eax
40926a:	83 f8 01             	cmp    $0x1,%eax
40926d:	72 34                	jb     0x4092a3
40926f:	8d 41 01             	lea    0x1(%ecx),%eax
409272:	83 fa 08             	cmp    $0x8,%edx
409275:	89 45 e8             	mov    %eax,-0x18(%ebp)
409278:	8d 45 d8             	lea    -0x28(%ebp),%eax
40927b:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
40927f:	2b cb                	sub    %ebx,%ecx
409281:	8d 34 58             	lea    (%eax,%ebx,2),%esi
409284:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40928b:	50                   	push   %eax
40928c:	8d 46 02             	lea    0x2(%esi),%eax
40928f:	56                   	push   %esi
409290:	50                   	push   %eax
409291:	e8 ea 23 01 00       	call   0x41b680
409296:	8b 45 bc             	mov    -0x44(%ebp),%eax
409299:	83 c4 0c             	add    $0xc,%esp
40929c:	66 89 06             	mov    %ax,(%esi)
40929f:	8b f0                	mov    %eax,%esi
4092a1:	eb 15                	jmp    0x4092b8
4092a3:	56                   	push   %esi
4092a4:	6a 01                	push   $0x1
4092a6:	53                   	push   %ebx
4092a7:	c6 45 a8 00          	movb   $0x0,-0x58(%ebp)
4092ab:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4092ae:	ff 75 a8             	push   -0x58(%ebp)
4092b1:	6a 01                	push   $0x1
4092b3:	e8 68 13 00 00       	call   0x40a620
4092b8:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
4092bc:	8d 47 01             	lea    0x1(%edi),%eax
4092bf:	0f 4f f8             	cmovg  %eax,%edi
4092c2:	8a 07                	mov    (%edi),%al
4092c4:	3c 7f                	cmp    $0x7f,%al
4092c6:	0f 85 74 ff ff ff    	jne    0x409240
4092cc:	8b 55 b8             	mov    -0x48(%ebp),%edx
4092cf:	8b 45 ac             	mov    -0x54(%ebp),%eax
4092d2:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4092d5:	89 4d bc             	mov    %ecx,-0x44(%ebp)
4092d8:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
4092dc:	8b 78 20             	mov    0x20(%eax),%edi
4092df:	7c 0e                	jl     0x4092ef
4092e1:	7f 04                	jg     0x4092e7
4092e3:	85 ff                	test   %edi,%edi
4092e5:	74 08                	je     0x4092ef
4092e7:	3b f9                	cmp    %ecx,%edi
4092e9:	76 04                	jbe    0x4092ef
4092eb:	2b f9                	sub    %ecx,%edi
4092ed:	eb 02                	jmp    0x4092f1
4092ef:	33 ff                	xor    %edi,%edi
4092f1:	8b 40 14             	mov    0x14(%eax),%eax
4092f4:	8b 75 1c             	mov    0x1c(%ebp),%esi
4092f7:	25 c0 01 00 00       	and    $0x1c0,%eax
4092fc:	8b 5d 08             	mov    0x8(%ebp),%ebx
4092ff:	83 f8 40             	cmp    $0x40,%eax
409302:	0f 84 84 00 00 00    	je     0x40938c
409308:	3d 00 01 00 00       	cmp    $0x100,%eax
40930d:	74 40                	je     0x40934f
40930f:	57                   	push   %edi
409310:	56                   	push   %esi
409311:	ff 75 14             	push   0x14(%ebp)
409314:	8d 45 b0             	lea    -0x50(%ebp),%eax
409317:	ff 75 10             	push   0x10(%ebp)
40931a:	50                   	push   %eax
40931b:	53                   	push   %ebx
40931c:	e8 ff fb ff ff       	call   0x408f20
409321:	8b 75 b8             	mov    -0x48(%ebp),%esi
409324:	33 ff                	xor    %edi,%edi
409326:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40932a:	56                   	push   %esi
40932b:	8b 10                	mov    (%eax),%edx
40932d:	8b 48 04             	mov    0x4(%eax),%ecx
409330:	8d 45 d8             	lea    -0x28(%ebp),%eax
409333:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
409337:	50                   	push   %eax
409338:	51                   	push   %ecx
409339:	52                   	push   %edx
40933a:	8d 45 b0             	lea    -0x50(%ebp),%eax
40933d:	89 55 10             	mov    %edx,0x10(%ebp)
409340:	50                   	push   %eax
409341:	53                   	push   %ebx
409342:	89 4d 14             	mov    %ecx,0x14(%ebp)
409345:	e8 66 fc ff ff       	call   0x408fb0
40934a:	83 c4 30             	add    $0x30,%esp
40934d:	eb 60                	jmp    0x4093af
40934f:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
409353:	8d 45 d8             	lea    -0x28(%ebp),%eax
409356:	52                   	push   %edx
409357:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
40935b:	50                   	push   %eax
40935c:	ff 75 14             	push   0x14(%ebp)
40935f:	8d 45 b0             	lea    -0x50(%ebp),%eax
409362:	ff 75 10             	push   0x10(%ebp)
409365:	50                   	push   %eax
409366:	53                   	push   %ebx
409367:	e8 44 fc ff ff       	call   0x408fb0
40936c:	57                   	push   %edi
40936d:	56                   	push   %esi
40936e:	8b 08                	mov    (%eax),%ecx
409370:	8b 40 04             	mov    0x4(%eax),%eax
409373:	50                   	push   %eax
409374:	89 45 14             	mov    %eax,0x14(%ebp)
409377:	8d 45 b0             	lea    -0x50(%ebp),%eax
40937a:	51                   	push   %ecx
40937b:	50                   	push   %eax
40937c:	53                   	push   %ebx
40937d:	89 4d 10             	mov    %ecx,0x10(%ebp)
409380:	e8 9b fb ff ff       	call   0x408f20
409385:	83 c4 30             	add    $0x30,%esp
409388:	33 ff                	xor    %edi,%edi
40938a:	eb 20                	jmp    0x4093ac
40938c:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
409390:	8d 45 d8             	lea    -0x28(%ebp),%eax
409393:	52                   	push   %edx
409394:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
409398:	50                   	push   %eax
409399:	ff 75 14             	push   0x14(%ebp)
40939c:	8d 45 b0             	lea    -0x50(%ebp),%eax
40939f:	ff 75 10             	push   0x10(%ebp)
4093a2:	50                   	push   %eax
4093a3:	53                   	push   %ebx
4093a4:	e8 07 fc ff ff       	call   0x408fb0
4093a9:	83 c4 18             	add    $0x18,%esp
4093ac:	8b 75 b8             	mov    -0x48(%ebp),%esi
4093af:	8b 10                	mov    (%eax),%edx
4093b1:	8b 48 04             	mov    0x4(%eax),%ecx
4093b4:	8d 45 d8             	lea    -0x28(%ebp),%eax
4093b7:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
4093bb:	89 55 10             	mov    %edx,0x10(%ebp)
4093be:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
4093c2:	29 75 bc             	sub    %esi,-0x44(%ebp)
4093c5:	ff 75 bc             	push   -0x44(%ebp)
4093c8:	89 4d 14             	mov    %ecx,0x14(%ebp)
4093cb:	8d 04 70             	lea    (%eax,%esi,2),%eax
4093ce:	50                   	push   %eax
4093cf:	51                   	push   %ecx
4093d0:	52                   	push   %edx
4093d1:	8d 45 b0             	lea    -0x50(%ebp),%eax
4093d4:	50                   	push   %eax
4093d5:	53                   	push   %ebx
4093d6:	e8 d5 fb ff ff       	call   0x408fb0
4093db:	8b 55 ac             	mov    -0x54(%ebp),%edx
4093de:	8b 75 a0             	mov    -0x60(%ebp),%esi
4093e1:	57                   	push   %edi
4093e2:	8b 08                	mov    (%eax),%ecx
4093e4:	8b 40 04             	mov    0x4(%eax),%eax
4093e7:	ff 75 1c             	push   0x1c(%ebp)
4093ea:	89 4d 10             	mov    %ecx,0x10(%ebp)
4093ed:	50                   	push   %eax
4093ee:	51                   	push   %ecx
4093ef:	56                   	push   %esi
4093f0:	53                   	push   %ebx
4093f1:	89 45 14             	mov    %eax,0x14(%ebp)
4093f4:	c7 42 20 00 00 00 00 	movl   $0x0,0x20(%edx)
4093fb:	c7 42 24 00 00 00 00 	movl   $0x0,0x24(%edx)
409402:	e8 19 fb ff ff       	call   0x408f20
409407:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40940a:	83 c4 30             	add    $0x30,%esp
40940d:	83 f9 10             	cmp    $0x10,%ecx
409410:	72 28                	jb     0x40943a
409412:	8b 55 c0             	mov    -0x40(%ebp),%edx
409415:	41                   	inc    %ecx
409416:	8b c2                	mov    %edx,%eax
409418:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40941e:	72 10                	jb     0x409430
409420:	8b 50 fc             	mov    -0x4(%eax),%edx
409423:	83 c1 23             	add    $0x23,%ecx
409426:	2b c2                	sub    %edx,%eax
409428:	83 c0 fc             	add    $0xfffffffc,%eax
40942b:	83 f8 1f             	cmp    $0x1f,%eax
40942e:	77 75                	ja     0x4094a5
409430:	51                   	push   %ecx
409431:	52                   	push   %edx
409432:	e8 81 07 01 00       	call   0x419bb8
409437:	83 c4 08             	add    $0x8,%esp
40943a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40943d:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
409444:	c7 45 d4 0f 00 00 00 	movl   $0xf,-0x2c(%ebp)
40944b:	c6 45 c0 00          	movb   $0x0,-0x40(%ebp)
40944f:	83 f9 08             	cmp    $0x8,%ecx
409452:	72 2e                	jb     0x409482
409454:	8b 55 d8             	mov    -0x28(%ebp),%edx
409457:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx