46527c:	85 db                	test   %ebx,%ebx
46527e:	78 24                	js     0x4652a4
465280:	3b df                	cmp    %edi,%ebx
465282:	7e 02                	jle    0x465286
465284:	8b df                	mov    %edi,%ebx
465286:	8b 45 08             	mov    0x8(%ebp),%eax
465289:	8b 40 04             	mov    0x4(%eax),%eax
46528c:	8b 30                	mov    (%eax),%esi
46528e:	8b ce                	mov    %esi,%ecx
465290:	e8 d7 40 fa ff       	call   0x40936c
465295:	53                   	push   %ebx
465296:	2b fb                	sub    %ebx,%edi
465298:	57                   	push   %edi
465299:	ff 76 08             	push   0x8(%esi)
46529c:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46529f:	e8 45 17 fa ff       	call   0x4069e9
4652a4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4652a7:	8d 45 f0             	lea    -0x10(%ebp),%eax
4652aa:	50                   	push   %eax
4652ab:	e8 b8 18 fa ff       	call   0x406b68
4652b0:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4652b3:	e8 7f 78 fa ff       	call   0x40cb37
4652b8:	5f                   	pop    %edi
4652b9:	5e                   	pop    %esi
4652ba:	33 c0                	xor    %eax,%eax
4652bc:	5b                   	pop    %ebx
4652bd:	c9                   	leave
4652be:	c2 08 00             	ret    $0x8
4652c1:	55                   	push   %ebp
4652c2:	8b ec                	mov    %esp,%ebp
4652c4:	83 e4 f8             	and    $0xfffffff8,%esp
4652c7:	83 ec 14             	sub    $0x14,%esp
4652ca:	8b 45 08             	mov    0x8(%ebp),%eax
4652cd:	56                   	push   %esi
4652ce:	8b 40 04             	mov    0x4(%eax),%eax
4652d1:	8b 30                	mov    (%eax),%esi
4652d3:	8b ce                	mov    %esi,%ecx
4652d5:	e8 92 40 fa ff       	call   0x40936c
4652da:	8b 4e 08             	mov    0x8(%esi),%ecx
4652dd:	8b 01                	mov    (%ecx),%eax
4652df:	89 44 24 08          	mov    %eax,0x8(%esp)
4652e3:	8b 41 04             	mov    0x4(%ecx),%eax
4652e6:	89 44 24 0c          	mov    %eax,0xc(%esp)
4652ea:	8b 41 08             	mov    0x8(%ecx),%eax
4652ed:	89 44 24 10          	mov    %eax,0x10(%esp)
4652f1:	8b 41 0c             	mov    0xc(%ecx),%eax
4652f4:	8d 4c 24 08          	lea    0x8(%esp),%ecx
4652f8:	ff 00                	incl   (%eax)
4652fa:	89 44 24 14          	mov    %eax,0x14(%esp)
4652fe:	e8 98 28 fe ff       	call   0x447b9b
465303:	8b 4d 0c             	mov    0xc(%ebp),%ecx
465306:	8d 44 24 08          	lea    0x8(%esp),%eax
46530a:	50                   	push   %eax
46530b:	e8 58 18 fa ff       	call   0x406b68
465310:	8d 4c 24 08          	lea    0x8(%esp),%ecx
465314:	e8 1e 78 fa ff       	call   0x40cb37
465319:	33 c0                	xor    %eax,%eax
46531b:	5e                   	pop    %esi
46531c:	8b e5                	mov    %ebp,%esp
46531e:	5d                   	pop    %ebp
46531f:	c2 08 00             	ret    $0x8
465322:	55                   	push   %ebp
465323:	8b ec                	mov    %esp,%ebp
465325:	83 e4 f8             	and    $0xfffffff8,%esp
465328:	83 ec 24             	sub    $0x24,%esp
46532b:	53                   	push   %ebx
46532c:	56                   	push   %esi
46532d:	8b 75 08             	mov    0x8(%ebp),%esi
465330:	57                   	push   %edi
465331:	8b 46 04             	mov    0x4(%esi),%eax
465334:	8b 48 04             	mov    0x4(%eax),%ecx
465337:	e8 4a 7f fa ff       	call   0x40d286
46533c:	8b 4e 04             	mov    0x4(%esi),%ecx
46533f:	8b d8                	mov    %eax,%ebx
465341:	8b 31                	mov    (%ecx),%esi
465343:	8b ce                	mov    %esi,%ecx
465345:	e8 22 40 fa ff       	call   0x40936c
46534a:	8b 56 08             	mov    0x8(%esi),%edx
46534d:	8b 42 08             	mov    0x8(%edx),%eax
465350:	8b 0a                	mov    (%edx),%ecx
465352:	8b 72 04             	mov    0x4(%edx),%esi
465355:	89 44 24 18          	mov    %eax,0x18(%esp)
465359:	8b 42 0c             	mov    0xc(%edx),%eax
46535c:	89 4c 24 10          	mov    %ecx,0x10(%esp)
465360:	ff 00                	incl   (%eax)
465362:	56                   	push   %esi
465363:	8d 4c 24 24          	lea    0x24(%esp),%ecx
465367:	89 74 24 18          	mov    %esi,0x18(%esp)
46536b:	89 44 24 20          	mov    %eax,0x20(%esp)
46536f:	e8 9b 17 fa ff       	call   0x406b0f
465374:	83 fb 08             	cmp    $0x8,%ebx
465377:	75 41                	jne    0x4653ba
465379:	33 ff                	xor    %edi,%edi
46537b:	85 f6                	test   %esi,%esi
46537d:	74 32                	je     0x4653b1
46537f:	57                   	push   %edi
465380:	8d 4c 24 14          	lea    0x14(%esp),%ecx
465384:	e8 1d 0e fa ff       	call   0x4061a6
465389:	66 8b 08             	mov    (%eax),%cx
46538c:	e8 50 1f fe ff       	call   0x4472e1
465391:	85 c0                	test   %eax,%eax
465393:	75 17                	jne    0x4653ac
465395:	57                   	push   %edi
465396:	8d 4c 24 14          	lea    0x14(%esp),%ecx
46539a:	e8 07 0e fa ff       	call   0x4061a6
46539f:	0f b7 00             	movzwl (%eax),%eax
4653a2:	50                   	push   %eax
4653a3:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4653a7:	e8 ed 73 fa ff       	call   0x40c799
4653ac:	47                   	inc    %edi
4653ad:	3b fe                	cmp    %esi,%edi
4653af:	72 ce                	jb     0x46537f
4653b1:	8d 44 24 20          	lea    0x20(%esp),%eax
4653b5:	e9 07 01 00 00       	jmp    0x4654c1
4653ba:	f6 c3 01             	test   $0x1,%bl
4653bd:	74 49                	je     0x465408
4653bf:	85 f6                	test   %esi,%esi
4653c1:	74 45                	je     0x465408
4653c3:	33 ff                	xor    %edi,%edi
4653c5:	85 f6                	test   %esi,%esi
4653c7:	74 1b                	je     0x4653e4
4653c9:	57                   	push   %edi
4653ca:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4653ce:	e8 d3 0d fa ff       	call   0x4061a6
4653d3:	66 8b 08             	mov    (%eax),%cx
4653d6:	e8 06 1f fe ff       	call   0x4472e1
4653db:	85 c0                	test   %eax,%eax
4653dd:	74 05                	je     0x4653e4
4653df:	47                   	inc    %edi
4653e0:	3b fe                	cmp    %esi,%edi
4653e2:	72 e5                	jb     0x4653c9
4653e4:	2b f7                	sub    %edi,%esi
4653e6:	56                   	push   %esi
4653e7:	57                   	push   %edi
4653e8:	8d 44 24 18          	lea    0x18(%esp),%eax
4653ec:	50                   	push   %eax
4653ed:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
4653f1:	e8 f3 15 fa ff       	call   0x4069e9
4653f6:	8d 44 24 20          	lea    0x20(%esp),%eax
4653fa:	50                   	push   %eax
4653fb:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4653ff:	e8 e9 1a fa ff       	call   0x406eed
465404:	8b 74 24 14          	mov    0x14(%esp),%esi
465408:	f6 c3 02             	test   $0x2,%bl
46540b:	74 48                	je     0x465455
46540d:	85 f6                	test   %esi,%esi
46540f:	74 44                	je     0x465455
465411:	eb 16                	jmp    0x465429
465413:	56                   	push   %esi
465414:	8d 4c 24 14          	lea    0x14(%esp),%ecx
465418:	e8 89 0d fa ff       	call   0x4061a6
46541d:	66 8b 08             	mov    (%eax),%cx
465420:	e8 bc 1e fe ff       	call   0x4472e1
465425:	85 c0                	test   %eax,%eax
465427:	74 06                	je     0x46542f
465429:	4e                   	dec    %esi
46542a:	83 fe ff             	cmp    $0xffffffff,%esi
46542d:	75 e4                	jne    0x465413
46542f:	8d 46 01             	lea    0x1(%esi),%eax
465432:	50                   	push   %eax
465433:	6a 00                	push   $0x0
465435:	8d 44 24 18          	lea    0x18(%esp),%eax
465439:	50                   	push   %eax
46543a:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
46543e:	e8 a6 15 fa ff       	call   0x4069e9
465443:	8d 44 24 20          	lea    0x20(%esp),%eax
465447:	50                   	push   %eax
465448:	8d 4c 24 14          	lea    0x14(%esp),%ecx
46544c:	e8 9c 1a fa ff       	call   0x406eed
465451:	8b 74 24 14          	mov    0x14(%esp),%esi
465455:	f6 c3 04             	test   $0x4,%bl
465458:	74 63                	je     0x4654bd
46545a:	85 f6                	test   %esi,%esi
46545c:	74 5f                	je     0x4654bd
46545e:	6a ff                	push   $0xffffffff
465460:	6a 00                	push   $0x0
465462:	8d 4c 24 28          	lea    0x28(%esp),%ecx
465466:	e8 20 5d fa ff       	call   0x40b18b
46546b:	32 db                	xor    %bl,%bl
46546d:	33 ff                	xor    %edi,%edi
46546f:	85 f6                	test   %esi,%esi
465471:	74 3c                	je     0x4654af
465473:	57                   	push   %edi
465474:	8d 4c 24 14          	lea    0x14(%esp),%ecx
465478:	e8 29 0d fa ff       	call   0x4061a6
46547d:	66 8b 08             	mov    (%eax),%cx
465480:	e8 5c 1e fe ff       	call   0x4472e1
465485:	85 c0                	test   %eax,%eax
465487:	74 08                	je     0x465491
465489:	84 db                	test   %bl,%bl
46548b:	75 1d                	jne    0x4654aa
46548d:	fe c3                	inc    %bl
46548f:	eb 02                	jmp    0x465493
465491:	32 db                	xor    %bl,%bl
465493:	57                   	push   %edi
465494:	8d 4c 24 14          	lea    0x14(%esp),%ecx
465498:	e8 09 0d fa ff       	call   0x4061a6
46549d:	0f b7 00             	movzwl (%eax),%eax
4654a0:	50                   	push   %eax
4654a1:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4654a5:	e8 ef 72 fa ff       	call   0x40c799
4654aa:	47                   	inc    %edi
4654ab:	3b fe                	cmp    %esi,%edi
4654ad:	72 c4                	jb     0x465473
4654af:	8d 44 24 20          	lea    0x20(%esp),%eax
4654b3:	50                   	push   %eax
4654b4:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4654b8:	e8 30 1a fa ff       	call   0x406eed
4654bd:	8d 44 24 10          	lea    0x10(%esp),%eax
4654c1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4654c4:	50                   	push   %eax
4654c5:	e8 9e 16 fa ff       	call   0x406b68
4654ca:	8d 4c 24 20          	lea    0x20(%esp),%ecx
4654ce:	e8 64 76 fa ff       	call   0x40cb37
4654d3:	8d 4c 24 10          	lea    0x10(%esp),%ecx
4654d7:	e8 5b 76 fa ff       	call   0x40cb37
4654dc:	5f                   	pop    %edi
4654dd:	5e                   	pop    %esi
4654de:	33 c0                	xor    %eax,%eax
4654e0:	5b                   	pop    %ebx
4654e1:	8b e5                	mov    %ebp,%esp
4654e3:	5d                   	pop    %ebp
4654e4:	c2 08 00             	ret    $0x8
4654e7:	55                   	push   %ebp
4654e8:	8b ec                	mov    %esp,%ebp
4654ea:	83 e4 f8             	and    $0xfffffff8,%esp
4654ed:	83 ec 24             	sub    $0x24,%esp
4654f0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4654f3:	53                   	push   %ebx
4654f4:	56                   	push   %esi
4654f5:	57                   	push   %edi
4654f6:	68 00 dc 49 00       	push   $0x49dc00
4654fb:	e8 b9 78 fa ff       	call   0x40cdb9
465500:	8b 7d 08             	mov    0x8(%ebp),%edi
465503:	8b 47 04             	mov    0x4(%edi),%eax
465506:	8b 30                	mov    (%eax),%esi
465508:	8b ce                	mov    %esi,%ecx
46550a:	e8 5d 3e fa ff       	call   0x40936c
46550f:	83 7f 08 02          	cmpl   $0x2,0x8(%edi)
465513:	8b 46 08             	mov    0x8(%esi),%eax
465516:	89 44 24 0c          	mov    %eax,0xc(%esp)
46551a:	76 26                	jbe    0x465542
46551c:	8b 47 04             	mov    0x4(%edi),%eax
46551f:	6a 29                	push   $0x29
465521:	8b 70 08             	mov    0x8(%eax),%esi
465524:	8b ce                	mov    %esi,%ecx
465526:	e8 c1 c6 f9 ff       	call   0x401bec
46552b:	84 c0                	test   %al,%al
46552d:	75 0f                	jne    0x46553e
46552f:	8b ce                	mov    %esi,%ecx
465531:	e8 50 7d fa ff       	call   0x40d286
465536:	8b d8                	mov    %eax,%ebx
465538:	8b 44 24 0c          	mov    0xc(%esp),%eax
46553c:	eb 07                	jmp    0x465545
46553e:	8b 44 24 0c          	mov    0xc(%esp),%eax
465542:	8b 58 04             	mov    0x4(%eax),%ebx
465545:	3b 58 04             	cmp    0x4(%eax),%ebx
465548:	76 03                	jbe    0x46554d
46554a:	8b 58 04             	mov    0x4(%eax),%ebx
46554d:	83 7f 08 01          	cmpl   $0x1,0x8(%edi)
465551:	76 1e                	jbe    0x465571
465553:	8b 47 04             	mov    0x4(%edi),%eax
465556:	6a 29                	push   $0x29
465558:	8b 70 04             	mov    0x4(%eax),%esi
46555b:	8b ce                	mov    %esi,%ecx
46555d:	e8 8a c6 f9 ff       	call   0x401bec
465562:	84 c0                	test   %al,%al
465564:	75 0b                	jne    0x465571
465566:	8b ce                	mov    %esi,%ecx
465568:	e8 19 7d fa ff       	call   0x40d286
46556d:	8b f0                	mov    %eax,%esi
46556f:	eb 02                	jmp    0x465573
465571:	33 f6                	xor    %esi,%esi
465573:	3b f3                	cmp    %ebx,%esi
465575:	0f 87 2a 01 00 00    	ja     0x4656a5
46557b:	75 01                	jne    0x46557e
46557d:	43                   	inc    %ebx
46557e:	2b de                	sub    %esi,%ebx
465580:	53                   	push   %ebx
465581:	8d 4c 24 24          	lea    0x24(%esp),%ecx
465585:	e8 85 15 fa ff       	call   0x406b0f
46558a:	53                   	push   %ebx
46558b:	56                   	push   %esi
46558c:	ff 74 24 14          	push   0x14(%esp)
465590:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
465594:	e8 50 14 fa ff       	call   0x4069e9
465599:	83 7f 08 03          	cmpl   $0x3,0x8(%edi)
46559d:	76 0f                	jbe    0x4655ae
46559f:	8b 47 04             	mov    0x4(%edi),%eax
4655a2:	8b 48 0c             	mov    0xc(%eax),%ecx
4655a5:	e8 dc 7c fa ff       	call   0x40d286
4655aa:	8b f0                	mov    %eax,%esi
4655ac:	eb 02                	jmp    0x4655b0
4655ae:	33 f6                	xor    %esi,%esi
4655b0:	83 fe 01             	cmp    $0x1,%esi
4655b3:	74 62                	je     0x465617
4655b5:	83 fe 02             	cmp    $0x2,%esi
4655b8:	74 5d                	je     0x465617
4655ba:	53                   	push   %ebx
4655bb:	6a 01                	push   $0x1
4655bd:	ff 75 0c             	push   0xc(%ebp)
4655c0:	e8 8b 6a fb ff       	call   0x41c050
4655c5:	33 f6                	xor    %esi,%esi
4655c7:	83 c4 0c             	add    $0xc,%esp
4655ca:	89 74 24 0c          	mov    %esi,0xc(%esp)
4655ce:	85 db                	test   %ebx,%ebx
4655d0:	0f 84 c6 00 00 00    	je     0x46569c
4655d6:	56                   	push   %esi
4655d7:	6a 01                	push   $0x1
4655d9:	6a 00                	push   $0x0
4655db:	ff 75 0c             	push   0xc(%ebp)
4655de:	e8 ad c5 fa ff       	call   0x411b90
4655e3:	83 c4 10             	add    $0x10,%esp
4655e6:	8d 4c 24 20          	lea    0x20(%esp),%ecx
4655ea:	56                   	push   %esi
4655eb:	8b f8                	mov    %eax,%edi
4655ed:	e8 b4 0b fa ff       	call   0x4061a6
4655f2:	0f b7 30             	movzwl (%eax),%esi
4655f5:	8b cf                	mov    %edi,%ecx
4655f7:	e8 24 d6 fa ff       	call   0x412c20
4655fc:	89 37                	mov    %esi,(%edi)
4655fe:	8b 74 24 0c          	mov    0xc(%esp),%esi
465602:	46                   	inc    %esi
465603:	c7 47 0c 01 00 00 00 	movl   $0x1,0xc(%edi)
46560a:	89 74 24 0c          	mov    %esi,0xc(%esp)
46560e:	3b f3                	cmp    %ebx,%esi
465610:	72 c4                	jb     0x4655d6
465612:	e9 85 00 00 00       	jmp    0x46569c
465617:	8d 4c 24 10          	lea    0x10(%esp),%ecx
46561b:	e8 1a 90 fb ff       	call   0x41e63a
465620:	8d 44 24 10          	lea    0x10(%esp),%eax
465624:	50                   	push   %eax
465625:	8d 44 24 24          	lea    0x24(%esp),%eax
465629:	50                   	push   %eax
46562a:	83 fe 01             	cmp    $0x1,%esi
46562d:	75 07                	jne    0x465636
46562f:	e8 9e 53 ff ff       	call   0x45a9d2
465634:	eb 05                	jmp    0x46563b
465636:	e8 49 06 fe ff       	call   0x445c84
46563b:	8b 5c 24 14          	mov    0x14(%esp),%ebx
46563f:	53                   	push   %ebx
465640:	6a 01                	push   $0x1
465642:	ff 75 0c             	push   0xc(%ebp)
465645:	e8 06 6a fb ff       	call   0x41c050
46564a:	33 f6                	xor    %esi,%esi
46564c:	83 c4 0c             	add    $0xc,%esp
46564f:	89 74 24 0c          	mov    %esi,0xc(%esp)
465653:	85 db                	test   %ebx,%ebx
465655:	74 3c                	je     0x465693
465657:	56                   	push   %esi