56e51f:	83 c4 08             	add    $0x8,%esp
56e522:	c3                   	ret
56e523:	5f                   	pop    %edi
56e524:	5e                   	pop    %esi
56e525:	5d                   	pop    %ebp
56e526:	33 c0                	xor    %eax,%eax
56e528:	5b                   	pop    %ebx
56e529:	83 c4 08             	add    $0x8,%esp
56e52c:	c3                   	ret
56e52d:	cc                   	int3
56e52e:	cc                   	int3
56e52f:	cc                   	int3
56e530:	b8 14 00 00 00       	mov    $0x14,%eax
56e535:	e8 76 32 06 00       	call   0x5d17b0
56e53a:	53                   	push   %ebx
56e53b:	8b 5c 24 20          	mov    0x20(%esp),%ebx
56e53f:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
56e546:	00
56e547:	c7 44 24 08 00 00 00 	movl   $0x0,0x8(%esp)
56e54e:	00
56e54f:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
56e556:	00
56e557:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
56e55e:	00
56e55f:	55                   	push   %ebp
56e560:	56                   	push   %esi
56e561:	57                   	push   %edi
56e562:	bf 01 00 00 00       	mov    $0x1,%edi
56e567:	85 db                	test   %ebx,%ebx
56e569:	0f 84 ab 03 00 00    	je     0x56e91a
56e56f:	53                   	push   %ebx
56e570:	e8 4b 6b f7 ff       	call   0x4e50c0
56e575:	83 c4 04             	add    $0x4,%esp
56e578:	85 c0                	test   %eax,%eax
56e57a:	0f 8e 9a 03 00 00    	jle    0x56e91a
56e580:	8b 74 24 28          	mov    0x28(%esp),%esi
56e584:	85 f6                	test   %esi,%esi
56e586:	75 10                	jne    0x56e598
56e588:	8b 44 24 30          	mov    0x30(%esp),%eax
56e58c:	85 c0                	test   %eax,%eax
56e58e:	75 1a                	jne    0x56e5aa
56e590:	5f                   	pop    %edi
56e591:	5e                   	pop    %esi
56e592:	5d                   	pop    %ebp
56e593:	5b                   	pop    %ebx
56e594:	83 c4 14             	add    $0x14,%esp
56e597:	c3                   	ret
56e598:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
56e59c:	0f 84 80 03 00 00    	je     0x56e922
56e5a2:	8b 44 24 30          	mov    0x30(%esp),%eax
56e5a6:	85 c0                	test   %eax,%eax
56e5a8:	74 07                	je     0x56e5b1
56e5aa:	83 cd ff             	or     $0xffffffff,%ebp
56e5ad:	33 db                	xor    %ebx,%ebx
56e5af:	eb 20                	jmp    0x56e5d1
56e5b1:	33 ed                	xor    %ebp,%ebp
56e5b3:	55                   	push   %ebp
56e5b4:	53                   	push   %ebx
56e5b5:	e8 c6 6c f7 ff       	call   0x4e5280
56e5ba:	8b d8                	mov    %eax,%ebx
56e5bc:	83 c4 08             	add    $0x8,%esp
56e5bf:	8b 83 ac 00 00 00    	mov    0xac(%ebx),%eax
56e5c5:	89 44 24 30          	mov    %eax,0x30(%esp)
56e5c9:	85 c0                	test   %eax,%eax
56e5cb:	0f 84 3f 03 00 00    	je     0x56e910
56e5d1:	ff 30                	push   (%eax)
56e5d3:	e8 b8 fb ff ff       	call   0x56e190
56e5d8:	83 c4 04             	add    $0x4,%esp
56e5db:	85 c0                	test   %eax,%eax
56e5dd:	74 13                	je     0x56e5f2
56e5df:	8b 44 24 30          	mov    0x30(%esp),%eax
56e5e3:	ff 70 04             	push   0x4(%eax)
56e5e6:	e8 a5 fb ff ff       	call   0x56e190
56e5eb:	83 c4 04             	add    $0x4,%esp
56e5ee:	85 c0                	test   %eax,%eax
56e5f0:	75 2a                	jne    0x56e61c
56e5f2:	85 f6                	test   %esi,%esi
56e5f4:	0f 84 14 03 00 00    	je     0x56e90e
56e5fa:	8b 46 1c             	mov    0x1c(%esi),%eax
56e5fd:	56                   	push   %esi
56e5fe:	6a 00                	push   $0x0
56e600:	c7 46 60 29 00 00 00 	movl   $0x29,0x60(%esi)
56e607:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e60a:	89 5e 64             	mov    %ebx,0x64(%esi)
56e60d:	ff d0                	call   *%eax
56e60f:	8b f8                	mov    %eax,%edi
56e611:	83 c4 08             	add    $0x8,%esp
56e614:	85 ff                	test   %edi,%edi
56e616:	0f 84 f4 02 00 00    	je     0x56e910
56e61c:	8b 44 24 30          	mov    0x30(%esp),%eax
56e620:	8b 10                	mov    (%eax),%edx
56e622:	85 d2                	test   %edx,%edx
56e624:	74 1d                	je     0x56e643
56e626:	8b 0a                	mov    (%edx),%ecx
56e628:	83 e9 00             	sub    $0x0,%ecx
56e62b:	74 0e                	je     0x56e63b
56e62d:	83 e9 01             	sub    $0x1,%ecx
56e630:	75 11                	jne    0x56e643
56e632:	8b 4a 04             	mov    0x4(%edx),%ecx
56e635:	89 4c 24 10          	mov    %ecx,0x10(%esp)
56e639:	eb 08                	jmp    0x56e643
56e63b:	c7 44 24 18 01 00 00 	movl   $0x1,0x18(%esp)
56e642:	00
56e643:	8b 48 04             	mov    0x4(%eax),%ecx
56e646:	85 c9                	test   %ecx,%ecx
56e648:	74 1d                	je     0x56e667
56e64a:	8b 01                	mov    (%ecx),%eax
56e64c:	83 e8 00             	sub    $0x0,%eax
56e64f:	74 0e                	je     0x56e65f
56e651:	83 e8 01             	sub    $0x1,%eax
56e654:	75 11                	jne    0x56e667
56e656:	8b 41 04             	mov    0x4(%ecx),%eax
56e659:	89 44 24 14          	mov    %eax,0x14(%esp)
56e65d:	eb 08                	jmp    0x56e667
56e65f:	c7 44 24 1c 01 00 00 	movl   $0x1,0x1c(%esp)
56e666:	00
56e667:	ff 74 24 2c          	push   0x2c(%esp)
56e66b:	45                   	inc    %ebp
56e66c:	e8 4f 6a f7 ff       	call   0x4e50c0
56e671:	83 c4 04             	add    $0x4,%esp
56e674:	3b e8                	cmp    %eax,%ebp
56e676:	0f 8d 79 02 00 00    	jge    0x56e8f5
56e67c:	0f 1f 40 00          	nopl   0x0(%eax)
56e680:	55                   	push   %ebp
56e681:	ff 74 24 30          	push   0x30(%esp)
56e685:	e8 f6 6b f7 ff       	call   0x4e5280
56e68a:	8b d8                	mov    %eax,%ebx
56e68c:	83 c4 08             	add    $0x8,%esp
56e68f:	85 db                	test   %ebx,%ebx
56e691:	0f 84 62 02 00 00    	je     0x56e8f9
56e697:	8b 83 ac 00 00 00    	mov    0xac(%ebx),%eax
56e69d:	89 44 24 20          	mov    %eax,0x20(%esp)
56e6a1:	85 c0                	test   %eax,%eax
56e6a3:	75 3f                	jne    0x56e6e4
56e6a5:	39 44 24 10          	cmp    %eax,0x10(%esp)
56e6a9:	75 0a                	jne    0x56e6b5
56e6ab:	39 44 24 14          	cmp    %eax,0x14(%esp)
56e6af:	0f 84 b8 01 00 00    	je     0x56e86d
56e6b5:	85 f6                	test   %esi,%esi
56e6b7:	0f 84 51 02 00 00    	je     0x56e90e
56e6bd:	8b 46 1c             	mov    0x1c(%esi),%eax
56e6c0:	56                   	push   %esi
56e6c1:	6a 00                	push   $0x0
56e6c3:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e6ca:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e6cd:	89 5e 64             	mov    %ebx,0x64(%esi)
56e6d0:	ff d0                	call   *%eax
56e6d2:	8b f8                	mov    %eax,%edi
56e6d4:	83 c4 08             	add    $0x8,%esp
56e6d7:	85 ff                	test   %edi,%edi
56e6d9:	0f 84 31 02 00 00    	je     0x56e910
56e6df:	e9 89 01 00 00       	jmp    0x56e86d
56e6e4:	ff 30                	push   (%eax)
56e6e6:	e8 a5 fa ff ff       	call   0x56e190
56e6eb:	83 c4 04             	add    $0x4,%esp
56e6ee:	85 c0                	test   %eax,%eax
56e6f0:	74 13                	je     0x56e705
56e6f2:	8b 44 24 20          	mov    0x20(%esp),%eax
56e6f6:	ff 70 04             	push   0x4(%eax)
56e6f9:	e8 92 fa ff ff       	call   0x56e190
56e6fe:	83 c4 04             	add    $0x4,%esp
56e701:	85 c0                	test   %eax,%eax
56e703:	75 2a                	jne    0x56e72f
56e705:	85 f6                	test   %esi,%esi
56e707:	0f 84 01 02 00 00    	je     0x56e90e
56e70d:	8b 46 1c             	mov    0x1c(%esi),%eax
56e710:	56                   	push   %esi
56e711:	6a 00                	push   $0x0
56e713:	c7 46 60 29 00 00 00 	movl   $0x29,0x60(%esi)
56e71a:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e71d:	89 5e 64             	mov    %ebx,0x64(%esi)
56e720:	ff d0                	call   *%eax
56e722:	8b f8                	mov    %eax,%edi
56e724:	83 c4 08             	add    $0x8,%esp
56e727:	85 ff                	test   %edi,%edi
56e729:	0f 84 e1 01 00 00    	je     0x56e910
56e72f:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
56e735:	8b 54 24 10          	mov    0x10(%esp),%edx
56e739:	8b 01                	mov    (%ecx),%eax
56e73b:	85 c0                	test   %eax,%eax
56e73d:	75 43                	jne    0x56e782
56e73f:	85 d2                	test   %edx,%edx
56e741:	74 3b                	je     0x56e77e
56e743:	85 f6                	test   %esi,%esi
56e745:	0f 84 c3 01 00 00    	je     0x56e90e
56e74b:	56                   	push   %esi
56e74c:	50                   	push   %eax
56e74d:	8b 46 1c             	mov    0x1c(%esi),%eax
56e750:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e757:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e75a:	89 5e 64             	mov    %ebx,0x64(%esi)
56e75d:	ff d0                	call   *%eax
56e75f:	8b f8                	mov    %eax,%edi
56e761:	83 c4 08             	add    $0x8,%esp
56e764:	85 ff                	test   %edi,%edi
56e766:	0f 84 a4 01 00 00    	je     0x56e910
56e76c:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
56e772:	33 d2                	xor    %edx,%edx
56e774:	89 54 24 10          	mov    %edx,0x10(%esp)
56e778:	89 54 24 18          	mov    %edx,0x18(%esp)
56e77c:	8b 01                	mov    (%ecx),%eax
56e77e:	85 c0                	test   %eax,%eax
56e780:	74 64                	je     0x56e7e6
56e782:	83 38 01             	cmpl   $0x1,(%eax)
56e785:	75 5f                	jne    0x56e7e6
56e787:	83 7c 24 18 00       	cmpl   $0x0,0x18(%esp)
56e78c:	75 41                	jne    0x56e7cf
56e78e:	52                   	push   %edx
56e78f:	ff 70 04             	push   0x4(%eax)
56e792:	e8 89 fc ff ff       	call   0x56e420
56e797:	83 c4 08             	add    $0x8,%esp
56e79a:	85 c0                	test   %eax,%eax
56e79c:	75 31                	jne    0x56e7cf
56e79e:	85 f6                	test   %esi,%esi
56e7a0:	0f 84 68 01 00 00    	je     0x56e90e
56e7a6:	56                   	push   %esi
56e7a7:	50                   	push   %eax
56e7a8:	8b 46 1c             	mov    0x1c(%esi),%eax
56e7ab:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e7b2:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e7b5:	89 5e 64             	mov    %ebx,0x64(%esi)
56e7b8:	ff d0                	call   *%eax
56e7ba:	8b f8                	mov    %eax,%edi
56e7bc:	83 c4 08             	add    $0x8,%esp
56e7bf:	85 ff                	test   %edi,%edi
56e7c1:	0f 84 49 01 00 00    	je     0x56e910
56e7c7:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
56e7cd:	eb 17                	jmp    0x56e7e6
56e7cf:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
56e7d5:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
56e7dc:	00
56e7dd:	8b 01                	mov    (%ecx),%eax
56e7df:	8b 40 04             	mov    0x4(%eax),%eax
56e7e2:	89 44 24 10          	mov    %eax,0x10(%esp)
56e7e6:	83 79 04 00          	cmpl   $0x0,0x4(%ecx)
56e7ea:	8b 54 24 14          	mov    0x14(%esp),%edx
56e7ee:	75 3e                	jne    0x56e82e
56e7f0:	85 d2                	test   %edx,%edx
56e7f2:	74 3a                	je     0x56e82e
56e7f4:	85 f6                	test   %esi,%esi
56e7f6:	0f 84 12 01 00 00    	je     0x56e90e
56e7fc:	8b 46 1c             	mov    0x1c(%esi),%eax
56e7ff:	56                   	push   %esi
56e800:	6a 00                	push   $0x0
56e802:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e809:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e80c:	89 5e 64             	mov    %ebx,0x64(%esi)
56e80f:	ff d0                	call   *%eax
56e811:	8b f8                	mov    %eax,%edi
56e813:	83 c4 08             	add    $0x8,%esp
56e816:	85 ff                	test   %edi,%edi
56e818:	0f 84 f2 00 00 00    	je     0x56e910
56e81e:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
56e824:	33 d2                	xor    %edx,%edx
56e826:	89 54 24 14          	mov    %edx,0x14(%esp)
56e82a:	89 54 24 1c          	mov    %edx,0x1c(%esp)
56e82e:	8b 41 04             	mov    0x4(%ecx),%eax
56e831:	85 c0                	test   %eax,%eax
56e833:	74 38                	je     0x56e86d
56e835:	83 38 01             	cmpl   $0x1,(%eax)
56e838:	75 33                	jne    0x56e86d
56e83a:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
56e83f:	75 14                	jne    0x56e855
56e841:	52                   	push   %edx
56e842:	ff 70 04             	push   0x4(%eax)
56e845:	e8 d6 fb ff ff       	call   0x56e420
56e84a:	83 c4 08             	add    $0x8,%esp
56e84d:	85 c0                	test   %eax,%eax
56e84f:	0f 84 60 fe ff ff    	je     0x56e6b5
56e855:	8b 83 ac 00 00 00    	mov    0xac(%ebx),%eax
56e85b:	c7 44 24 1c 00 00 00 	movl   $0x0,0x1c(%esp)
56e862:	00
56e863:	8b 40 04             	mov    0x4(%eax),%eax
56e866:	8b 40 04             	mov    0x4(%eax),%eax
56e869:	89 44 24 14          	mov    %eax,0x14(%esp)
56e86d:	ff 74 24 2c          	push   0x2c(%esp)
56e871:	45                   	inc    %ebp
56e872:	e8 49 68 f7 ff       	call   0x4e50c0
56e877:	83 c4 04             	add    $0x4,%esp
56e87a:	3b e8                	cmp    %eax,%ebp
56e87c:	0f 8c fe fd ff ff    	jl     0x56e680
56e882:	8b 83 ac 00 00 00    	mov    0xac(%ebx),%eax
56e888:	85 c0                	test   %eax,%eax
56e88a:	0f 84 80 00 00 00    	je     0x56e910
56e890:	8b 00                	mov    (%eax),%eax
56e892:	85 c0                	test   %eax,%eax
56e894:	74 27                	je     0x56e8bd
56e896:	83 38 00             	cmpl   $0x0,(%eax)
56e899:	75 22                	jne    0x56e8bd
56e89b:	85 f6                	test   %esi,%esi
56e89d:	74 6f                	je     0x56e90e
56e89f:	8b 46 1c             	mov    0x1c(%esi),%eax
56e8a2:	56                   	push   %esi
56e8a3:	6a 00                	push   $0x0
56e8a5:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e8ac:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e8af:	89 5e 64             	mov    %ebx,0x64(%esi)
56e8b2:	ff d0                	call   *%eax
56e8b4:	8b f8                	mov    %eax,%edi
56e8b6:	83 c4 08             	add    $0x8,%esp
56e8b9:	85 ff                	test   %edi,%edi
56e8bb:	74 53                	je     0x56e910
56e8bd:	8b 83 ac 00 00 00    	mov    0xac(%ebx),%eax
56e8c3:	8b 40 04             	mov    0x4(%eax),%eax
56e8c6:	85 c0                	test   %eax,%eax
56e8c8:	74 46                	je     0x56e910
56e8ca:	83 38 00             	cmpl   $0x0,(%eax)
56e8cd:	75 41                	jne    0x56e910
56e8cf:	85 f6                	test   %esi,%esi
56e8d1:	74 3b                	je     0x56e90e
56e8d3:	8b 46 1c             	mov    0x1c(%esi),%eax
56e8d6:	56                   	push   %esi
56e8d7:	6a 00                	push   $0x0
56e8d9:	c7 46 60 2e 00 00 00 	movl   $0x2e,0x60(%esi)
56e8e0:	89 6e 5c             	mov    %ebp,0x5c(%esi)
56e8e3:	89 5e 64             	mov    %ebx,0x64(%esi)
56e8e6:	ff d0                	call   *%eax
56e8e8:	83 c4 08             	add    $0x8,%esp
56e8eb:	8b f8                	mov    %eax,%edi
56e8ed:	5f                   	pop    %edi
56e8ee:	5e                   	pop    %esi
56e8ef:	5d                   	pop    %ebp
56e8f0:	5b                   	pop    %ebx
56e8f1:	83 c4 14             	add    $0x14,%esp
56e8f4:	c3                   	ret
56e8f5:	85 db                	test   %ebx,%ebx
56e8f7:	75 89                	jne    0x56e882
56e8f9:	85 f6                	test   %esi,%esi
56e8fb:	74 28                	je     0x56e925
56e8fd:	5f                   	pop    %edi
56e8fe:	c7 46 60 01 00 00 00 	movl   $0x1,0x60(%esi)
56e905:	33 c0                	xor    %eax,%eax
56e907:	5e                   	pop    %esi
56e908:	5d                   	pop    %ebp
56e909:	5b                   	pop    %ebx
56e90a:	83 c4 14             	add    $0x14,%esp
56e90d:	c3                   	ret
56e90e:	33 ff                	xor    %edi,%edi
56e910:	8b c7                	mov    %edi,%eax
56e912:	5f                   	pop    %edi
56e913:	5e                   	pop    %esi
56e914:	5d                   	pop    %ebp
56e915:	5b                   	pop    %ebx
56e916:	83 c4 14             	add    $0x14,%esp
56e919:	c3                   	ret
56e91a:	8b 74 24 28          	mov    0x28(%esp),%esi
56e91e:	85 f6                	test   %esi,%esi
56e920:	74 03                	je     0x56e925
56e922:	89 7e 60             	mov    %edi,0x60(%esi)
56e925:	5f                   	pop    %edi