56e3e7:	8b 50 fc             	mov    -0x4(%eax),%edx
56e3ea:	83 c1 23             	add    $0x23,%ecx
56e3ed:	2b c2                	sub    %edx,%eax
56e3ef:	83 c0 fc             	add    $0xfffffffc,%eax
56e3f2:	83 f8 1f             	cmp    $0x1f,%eax
56e3f5:	0f 87 f4 01 00 00    	ja     0x56e5ef
56e3fb:	8b c2                	mov    %edx,%eax
56e3fd:	51                   	push   %ecx
56e3fe:	50                   	push   %eax
56e3ff:	e8 6e 2c 07 00       	call   0x5e1072
56e404:	83 c4 08             	add    $0x8,%esp
56e407:	c7 46 64 00 00 00 00 	movl   $0x0,0x64(%esi)
56e40e:	c7 46 68 0f 00 00 00 	movl   $0xf,0x68(%esi)
56e415:	c6 46 54 00          	movb   $0x0,0x54(%esi)
56e419:	8b 4e 3c             	mov    0x3c(%esi),%ecx
56e41c:	83 f9 10             	cmp    $0x10,%ecx
56e41f:	72 2c                	jb     0x56e44d
56e421:	8b 46 28             	mov    0x28(%esi),%eax
56e424:	41                   	inc    %ecx
56e425:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
56e42b:	72 16                	jb     0x56e443
56e42d:	8b 50 fc             	mov    -0x4(%eax),%edx
56e430:	83 c1 23             	add    $0x23,%ecx
56e433:	2b c2                	sub    %edx,%eax
56e435:	83 c0 fc             	add    $0xfffffffc,%eax
56e438:	83 f8 1f             	cmp    $0x1f,%eax
56e43b:	0f 87 ae 01 00 00    	ja     0x56e5ef
56e441:	8b c2                	mov    %edx,%eax
56e443:	51                   	push   %ecx
56e444:	50                   	push   %eax
56e445:	e8 28 2c 07 00       	call   0x5e1072
56e44a:	83 c4 08             	add    $0x8,%esp
56e44d:	c7 46 38 00 00 00 00 	movl   $0x0,0x38(%esi)
56e454:	c7 46 3c 0f 00 00 00 	movl   $0xf,0x3c(%esi)
56e45b:	c6 46 28 00          	movb   $0x0,0x28(%esi)
56e45f:	8b 4e 24             	mov    0x24(%esi),%ecx
56e462:	57                   	push   %edi
56e463:	85 c9                	test   %ecx,%ecx
56e465:	74 6e                	je     0x56e4d5
56e467:	8b 46 20             	mov    0x20(%esi),%eax
56e46a:	48                   	dec    %eax
56e46b:	03 c8                	add    %eax,%ecx
56e46d:	8b 46 1c             	mov    0x1c(%esi),%eax
56e470:	48                   	dec    %eax
56e471:	23 c8                	and    %eax,%ecx
56e473:	8b 46 18             	mov    0x18(%esi),%eax
56e476:	8b 3c 88             	mov    (%eax,%ecx,4),%edi
56e479:	8b 4f 20             	mov    0x20(%edi),%ecx
56e47c:	83 f9 10             	cmp    $0x10,%ecx
56e47f:	72 2c                	jb     0x56e4ad
56e481:	8b 47 0c             	mov    0xc(%edi),%eax
56e484:	41                   	inc    %ecx
56e485:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
56e48b:	72 16                	jb     0x56e4a3
56e48d:	8b 50 fc             	mov    -0x4(%eax),%edx
56e490:	83 c1 23             	add    $0x23,%ecx
56e493:	2b c2                	sub    %edx,%eax
56e495:	83 c0 fc             	add    $0xfffffffc,%eax
56e498:	83 f8 1f             	cmp    $0x1f,%eax
56e49b:	0f 87 4e 01 00 00    	ja     0x56e5ef
56e4a1:	8b c2                	mov    %edx,%eax
56e4a3:	51                   	push   %ecx
56e4a4:	50                   	push   %eax
56e4a5:	e8 c8 2b 07 00       	call   0x5e1072
56e4aa:	83 c4 08             	add    $0x8,%esp
56e4ad:	c7 47 1c 00 00 00 00 	movl   $0x0,0x1c(%edi)
56e4b4:	c7 47 20 0f 00 00 00 	movl   $0xf,0x20(%edi)
56e4bb:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
56e4bf:	8b 4e 24             	mov    0x24(%esi),%ecx
56e4c2:	83 e9 01             	sub    $0x1,%ecx
56e4c5:	89 4e 24             	mov    %ecx,0x24(%esi)
56e4c8:	75 07                	jne    0x56e4d1
56e4ca:	c7 46 20 00 00 00 00 	movl   $0x0,0x20(%esi)
56e4d1:	85 c9                	test   %ecx,%ecx
56e4d3:	75 92                	jne    0x56e467
56e4d5:	8b 7e 1c             	mov    0x1c(%esi),%edi
56e4d8:	85 ff                	test   %edi,%edi
56e4da:	74 1e                	je     0x56e4fa
56e4dc:	0f 1f 40 00          	nopl   0x0(%eax)
56e4e0:	8b 46 18             	mov    0x18(%esi),%eax
56e4e3:	4f                   	dec    %edi
56e4e4:	8b 04 b8             	mov    (%eax,%edi,4),%eax
56e4e7:	85 c0                	test   %eax,%eax
56e4e9:	74 0b                	je     0x56e4f6
56e4eb:	6a 28                	push   $0x28
56e4ed:	50                   	push   %eax
56e4ee:	e8 7f 2b 07 00       	call   0x5e1072
56e4f3:	83 c4 08             	add    $0x8,%esp
56e4f6:	85 ff                	test   %edi,%edi
56e4f8:	75 e6                	jne    0x56e4e0
56e4fa:	8b 46 18             	mov    0x18(%esi),%eax
56e4fd:	85 c0                	test   %eax,%eax
56e4ff:	74 2e                	je     0x56e52f
56e501:	8b 4e 1c             	mov    0x1c(%esi),%ecx
56e504:	c1 e1 02             	shl    $0x2,%ecx
56e507:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
56e50d:	72 16                	jb     0x56e525
56e50f:	8b 50 fc             	mov    -0x4(%eax),%edx
56e512:	83 c1 23             	add    $0x23,%ecx
56e515:	2b c2                	sub    %edx,%eax
56e517:	83 c0 fc             	add    $0xfffffffc,%eax
56e51a:	83 f8 1f             	cmp    $0x1f,%eax
56e51d:	0f 87 cc 00 00 00    	ja     0x56e5ef
56e523:	8b c2                	mov    %edx,%eax
56e525:	51                   	push   %ecx
56e526:	50                   	push   %eax
56e527:	e8 46 2b 07 00       	call   0x5e1072
56e52c:	83 c4 08             	add    $0x8,%esp
56e52f:	8b 46 14             	mov    0x14(%esi),%eax
56e532:	6a 08                	push   $0x8
56e534:	50                   	push   %eax
56e535:	c7 46 1c 00 00 00 00 	movl   $0x0,0x1c(%esi)
56e53c:	c7 46 18 00 00 00 00 	movl   $0x0,0x18(%esi)
56e543:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
56e54a:	e8 23 2b 07 00       	call   0x5e1072
56e54f:	8b 4e 10             	mov    0x10(%esi),%ecx
56e552:	83 c4 08             	add    $0x8,%esp
56e555:	85 c9                	test   %ecx,%ecx
56e557:	74 1a                	je     0x56e573
56e559:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
56e560:	8d 41 ff             	lea    -0x1(%ecx),%eax
56e563:	89 46 10             	mov    %eax,0x10(%esi)
56e566:	8b c8                	mov    %eax,%ecx
56e568:	85 c0                	test   %eax,%eax
56e56a:	75 03                	jne    0x56e56f
56e56c:	89 46 0c             	mov    %eax,0xc(%esi)
56e56f:	85 c9                	test   %ecx,%ecx
56e571:	75 ed                	jne    0x56e560
56e573:	8b 7e 08             	mov    0x8(%esi),%edi
56e576:	85 ff                	test   %edi,%edi
56e578:	74 20                	je     0x56e59a
56e57a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
56e580:	8b 46 04             	mov    0x4(%esi),%eax
56e583:	4f                   	dec    %edi
56e584:	8b 04 b8             	mov    (%eax,%edi,4),%eax
56e587:	85 c0                	test   %eax,%eax
56e589:	74 0b                	je     0x56e596
56e58b:	6a 10                	push   $0x10
56e58d:	50                   	push   %eax
56e58e:	e8 df 2a 07 00       	call   0x5e1072
56e593:	83 c4 08             	add    $0x8,%esp
56e596:	85 ff                	test   %edi,%edi
56e598:	75 e6                	jne    0x56e580
56e59a:	8b 46 04             	mov    0x4(%esi),%eax
56e59d:	5f                   	pop    %edi
56e59e:	85 c0                	test   %eax,%eax
56e5a0:	74 2a                	je     0x56e5cc
56e5a2:	8b 4e 08             	mov    0x8(%esi),%ecx
56e5a5:	c1 e1 02             	shl    $0x2,%ecx
56e5a8:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
56e5ae:	72 12                	jb     0x56e5c2
56e5b0:	8b 50 fc             	mov    -0x4(%eax),%edx
56e5b3:	83 c1 23             	add    $0x23,%ecx
56e5b6:	2b c2                	sub    %edx,%eax
56e5b8:	83 c0 fc             	add    $0xfffffffc,%eax
56e5bb:	83 f8 1f             	cmp    $0x1f,%eax
56e5be:	77 2f                	ja     0x56e5ef
56e5c0:	8b c2                	mov    %edx,%eax
56e5c2:	51                   	push   %ecx
56e5c3:	50                   	push   %eax
56e5c4:	e8 a9 2a 07 00       	call   0x5e1072
56e5c9:	83 c4 08             	add    $0x8,%esp
56e5cc:	8b 06                	mov    (%esi),%eax
56e5ce:	6a 08                	push   $0x8
56e5d0:	50                   	push   %eax
56e5d1:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
56e5d8:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
56e5df:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
56e5e5:	e8 88 2a 07 00       	call   0x5e1072
56e5ea:	83 c4 08             	add    $0x8,%esp
56e5ed:	5e                   	pop    %esi
56e5ee:	c3                   	ret
56e5ef:	e8 3b e9 07 00       	call   0x5ecf2f
56e5f4:	cc                   	int3
56e5f5:	cc                   	int3
56e5f6:	cc                   	int3
56e5f7:	cc                   	int3
56e5f8:	cc                   	int3
56e5f9:	cc                   	int3
56e5fa:	cc                   	int3
56e5fb:	cc                   	int3
56e5fc:	cc                   	int3
56e5fd:	cc                   	int3
56e5fe:	cc                   	int3
56e5ff:	cc                   	int3
56e600:	55                   	push   %ebp
56e601:	8b ec                	mov    %esp,%ebp
56e603:	56                   	push   %esi
56e604:	8b f1                	mov    %ecx,%esi
56e606:	e8 65 fd ff ff       	call   0x56e370
56e60b:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
56e60f:	74 0b                	je     0x56e61c
56e611:	6a 20                	push   $0x20
56e613:	56                   	push   %esi
56e614:	e8 59 2a 07 00       	call   0x5e1072
56e619:	83 c4 08             	add    $0x8,%esp
56e61c:	8b c6                	mov    %esi,%eax
56e61e:	5e                   	pop    %esi
56e61f:	5d                   	pop    %ebp
56e620:	c2 04 00             	ret    $0x4
56e623:	cc                   	int3
56e624:	cc                   	int3
56e625:	cc                   	int3
56e626:	cc                   	int3
56e627:	cc                   	int3
56e628:	cc                   	int3
56e629:	cc                   	int3
56e62a:	cc                   	int3
56e62b:	cc                   	int3
56e62c:	cc                   	int3
56e62d:	cc                   	int3
56e62e:	cc                   	int3
56e62f:	cc                   	int3
56e630:	ff 74 24 10          	push   0x10(%esp)
56e634:	ff 74 24 10          	push   0x10(%esp)
56e638:	ff 74 24 10          	push   0x10(%esp)
56e63c:	ff 74 24 10          	push   0x10(%esp)
56e640:	6a 01                	push   $0x1
56e642:	e8 e9 01 00 00       	call   0x56e830
56e647:	83 c4 14             	add    $0x14,%esp
56e64a:	c3                   	ret
56e64b:	cc                   	int3
56e64c:	cc                   	int3
56e64d:	cc                   	int3
56e64e:	cc                   	int3
56e64f:	cc                   	int3
56e650:	ff 74 24 08          	push   0x8(%esp)
56e654:	ff 74 24 08          	push   0x8(%esp)
56e658:	6a 01                	push   $0x1
56e65a:	e8 51 00 00 00       	call   0x56e6b0
56e65f:	83 c4 0c             	add    $0xc,%esp
56e662:	c3                   	ret
56e663:	cc                   	int3
56e664:	cc                   	int3
56e665:	cc                   	int3
56e666:	cc                   	int3
56e667:	cc                   	int3
56e668:	cc                   	int3
56e669:	cc                   	int3
56e66a:	cc                   	int3
56e66b:	cc                   	int3
56e66c:	cc                   	int3
56e66d:	cc                   	int3
56e66e:	cc                   	int3
56e66f:	cc                   	int3
56e670:	ff 74 24 10          	push   0x10(%esp)
56e674:	ff 74 24 10          	push   0x10(%esp)
56e678:	ff 74 24 10          	push   0x10(%esp)
56e67c:	ff 74 24 10          	push   0x10(%esp)
56e680:	6a 00                	push   $0x0
56e682:	e8 a9 01 00 00       	call   0x56e830
56e687:	83 c4 14             	add    $0x14,%esp
56e68a:	c3                   	ret
56e68b:	cc                   	int3
56e68c:	cc                   	int3
56e68d:	cc                   	int3
56e68e:	cc                   	int3
56e68f:	cc                   	int3
56e690:	ff 74 24 08          	push   0x8(%esp)
56e694:	ff 74 24 08          	push   0x8(%esp)
56e698:	6a 00                	push   $0x0
56e69a:	e8 11 00 00 00       	call   0x56e6b0
56e69f:	83 c4 0c             	add    $0xc,%esp
56e6a2:	c3                   	ret
56e6a3:	cc                   	int3
56e6a4:	cc                   	int3
56e6a5:	cc                   	int3
56e6a6:	cc                   	int3
56e6a7:	cc                   	int3
56e6a8:	cc                   	int3
56e6a9:	cc                   	int3
56e6aa:	cc                   	int3
56e6ab:	cc                   	int3
56e6ac:	cc                   	int3
56e6ad:	cc                   	int3
56e6ae:	cc                   	int3
56e6af:	cc                   	int3
56e6b0:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
56e6b5:	b8 70 e6 56 00       	mov    $0x56e670,%eax
56e6ba:	53                   	push   %ebx
56e6bb:	57                   	push   %edi
56e6bc:	8b 7c 24 14          	mov    0x14(%esp),%edi
56e6c0:	b9 30 e6 56 00       	mov    $0x56e630,%ecx
56e6c5:	0f 45 c1             	cmovne %ecx,%eax
56e6c8:	bb 64 00 00 00       	mov    $0x64,%ebx
56e6cd:	89 44 24 0c          	mov    %eax,0xc(%esp)
56e6d1:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
56e6d5:	0f 85 32 01 00 00    	jne    0x56e80d
56e6db:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
56e6df:	0f 84 28 01 00 00    	je     0x56e80d
56e6e5:	55                   	push   %ebp
56e6e6:	56                   	push   %esi
56e6e7:	57                   	push   %edi
56e6e8:	e8 83 4c f4 ff       	call   0x4b3370
56e6ed:	8b e8                	mov    %eax,%ebp
56e6ef:	83 c4 04             	add    $0x4,%esp
56e6f2:	83 fd 01             	cmp    $0x1,%ebp
56e6f5:	75 15                	jne    0x56e70c
56e6f7:	6a 00                	push   $0x0
56e6f9:	ff 74 24 1c          	push   0x1c(%esp)
56e6fd:	e8 ee 4d f4 ff       	call   0x4b34f0
56e702:	83 c4 08             	add    $0x8,%esp
56e705:	8b c5                	mov    %ebp,%eax
56e707:	5e                   	pop    %esi
56e708:	5d                   	pop    %ebp
56e709:	5f                   	pop    %edi
56e70a:	5b                   	pop    %ebx
56e70b:	c3                   	ret
56e70c:	8d 45 fe             	lea    -0x2(%ebp),%eax
56e70f:	50                   	push   %eax
56e710:	57                   	push   %edi
56e711:	e8 2a 4b f4 ff       	call   0x4b3240
56e716:	83 c4 08             	add    $0x8,%esp
56e719:	85 c0                	test   %eax,%eax
56e71b:	0f 85 95 00 00 00    	jne    0x56e7b6
56e721:	8d 45 fd             	lea    -0x3(%ebp),%eax
56e724:	50                   	push   %eax
56e725:	57                   	push   %edi
56e726:	e8 15 4b f4 ff       	call   0x4b3240
56e72b:	83 c4 08             	add    $0x8,%esp
56e72e:	85 c0                	test   %eax,%eax
56e730:	0f 85 80 00 00 00    	jne    0x56e7b6
56e736:	8b 74 24 18          	mov    0x18(%esp),%esi
56e73a:	8d 45 01             	lea    0x1(%ebp),%eax
56e73d:	8b 6c 24 14          	mov    0x14(%esp),%ebp
56e741:	89 44 24 1c          	mov    %eax,0x1c(%esp)
56e745:	6a 00                	push   $0x0
56e747:	6a ff                	push   $0xffffffff
56e749:	50                   	push   %eax
56e74a:	56                   	push   %esi
56e74b:	ff d5                	call   *%ebp
56e74d:	83 c4 10             	add    $0x10,%esp
56e750:	85 c0                	test   %eax,%eax
56e752:	0f 84 ae 00 00 00    	je     0x56e806
56e758:	57                   	push   %edi
56e759:	56                   	push   %esi
56e75a:	e8 61 46 f4 ff       	call   0x4b2dc0
56e75f:	83 c4 08             	add    $0x8,%esp
56e762:	85 c0                	test   %eax,%eax
56e764:	78 30                	js     0x56e796
56e766:	57                   	push   %edi
56e767:	56                   	push   %esi
56e768:	56                   	push   %esi
56e769:	e8 f2 99 f6 ff       	call   0x4d8160
56e76e:	83 c4 0c             	add    $0xc,%esp
56e771:	85 c0                	test   %eax,%eax
56e773:	0f 84 8d 00 00 00    	je     0x56e806
56e779:	57                   	push   %edi
56e77a:	56                   	push   %esi
56e77b:	e8 40 46 f4 ff       	call   0x4b2dc0