56a3d5:	89 14 24             	mov    %edx,(%esp)
56a3d8:	8b 54 24 04          	mov    0x4(%esp),%edx
56a3dc:	8b 04 24             	mov    (%esp),%eax
56a3df:	3b c2                	cmp    %edx,%eax
56a3e1:	0f 84 f8 00 00 00    	je     0x56a4df
56a3e7:	8b 0c 24             	mov    (%esp),%ecx
56a3ea:	8b 41 04             	mov    0x4(%ecx),%eax
56a3ed:	8b 0c 24             	mov    (%esp),%ecx
56a3f0:	8b d0                	mov    %eax,%edx
56a3f2:	8b f8                	mov    %eax,%edi
56a3f4:	0f b7 09             	movzwl (%ecx),%ecx
56a3f7:	c1 e1 02             	shl    $0x2,%ecx
56a3fa:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
56a3fd:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
56a400:	03 d1                	add    %ecx,%edx
56a402:	89 54 24 08          	mov    %edx,0x8(%esp)
56a406:	8b 44 24 08          	mov    0x8(%esp),%eax
56a40a:	3b f8                	cmp    %eax,%edi
56a40c:	0f 84 b7 00 00 00    	je     0x56a4c9
56a412:	8b 47 34             	mov    0x34(%edi),%eax
56a415:	85 c0                	test   %eax,%eax
56a417:	0f 84 9d 00 00 00    	je     0x56a4ba
56a41d:	8b d0                	mov    %eax,%edx
56a41f:	8b 4f 30             	mov    0x30(%edi),%ecx
56a422:	c1 e1 02             	shl    $0x2,%ecx
56a425:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
56a428:	03 d1                	add    %ecx,%edx
56a42a:	89 54 24 10          	mov    %edx,0x10(%esp)
56a42e:	89 44 24 0c          	mov    %eax,0xc(%esp)
56a432:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a436:	8b 54 24 10          	mov    0x10(%esp),%edx
56a43a:	3b c2                	cmp    %edx,%eax
56a43c:	74 7c                	je     0x56a4ba
56a43e:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56a442:	8b 41 04             	mov    0x4(%ecx),%eax
56a445:	85 c0                	test   %eax,%eax
56a447:	74 60                	je     0x56a4a9
56a449:	33 f6                	xor    %esi,%esi
56a44b:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a44f:	8b 18                	mov    (%eax),%ebx
56a451:	eb 4f                	jmp    0x56a4a2
56a453:	8b 43 1c             	mov    0x1c(%ebx),%eax
56a456:	85 c0                	test   %eax,%eax
56a458:	74 44                	je     0x56a49e
56a45a:	8b 53 20             	mov    0x20(%ebx),%edx
56a45d:	8b 43 2c             	mov    0x2c(%ebx),%eax
56a460:	e8 fb f5 00 00       	call   0x579a60
56a465:	8b 53 24             	mov    0x24(%ebx),%edx
56a468:	8b 43 30             	mov    0x30(%ebx),%eax
56a46b:	e8 f0 f5 00 00       	call   0x579a60
56a470:	8b 53 18             	mov    0x18(%ebx),%edx
56a473:	c1 e2 02             	shl    $0x2,%edx
56a476:	8d 14 52             	lea    (%edx,%edx,2),%edx
56a479:	8d 14 92             	lea    (%edx,%edx,4),%edx
56a47c:	8b 43 1c             	mov    0x1c(%ebx),%eax
56a47f:	03 d0                	add    %eax,%edx
56a481:	3b d0                	cmp    %eax,%edx
56a483:	74 19                	je     0x56a49e
56a485:	8b 48 28             	mov    0x28(%eax),%ecx
56a488:	89 48 30             	mov    %ecx,0x30(%eax)
56a48b:	8b 48 08             	mov    0x8(%eax),%ecx
56a48e:	89 48 38             	mov    %ecx,0x38(%eax)
56a491:	8b 48 10             	mov    0x10(%eax),%ecx
56a494:	89 48 34             	mov    %ecx,0x34(%eax)
56a497:	83 c0 3c             	add    $0x3c,%eax
56a49a:	3b d0                	cmp    %eax,%edx
56a49c:	75 e7                	jne    0x56a485
56a49e:	46                   	inc    %esi
56a49f:	83 c3 34             	add    $0x34,%ebx
56a4a2:	8b 47 20             	mov    0x20(%edi),%eax
56a4a5:	3b f0                	cmp    %eax,%esi
56a4a7:	72 aa                	jb     0x56a453
56a4a9:	83 44 24 0c 24       	addl   $0x24,0xc(%esp)
56a4ae:	8b 54 24 0c          	mov    0xc(%esp),%edx
56a4b2:	8b 44 24 10          	mov    0x10(%esp),%eax
56a4b6:	3b d0                	cmp    %eax,%edx
56a4b8:	75 84                	jne    0x56a43e
56a4ba:	83 c7 3c             	add    $0x3c,%edi
56a4bd:	8b 54 24 08          	mov    0x8(%esp),%edx
56a4c1:	3b fa                	cmp    %edx,%edi
56a4c3:	0f 85 49 ff ff ff    	jne    0x56a412
56a4c9:	81 04 24 04 02 00 00 	addl   $0x204,(%esp)
56a4d0:	8b 0c 24             	mov    (%esp),%ecx
56a4d3:	8b 44 24 04          	mov    0x4(%esp),%eax
56a4d7:	3b c8                	cmp    %eax,%ecx
56a4d9:	0f 85 08 ff ff ff    	jne    0x56a3e7
56a4df:	83 c4 14             	add    $0x14,%esp
56a4e2:	5f                   	pop    %edi
56a4e3:	5e                   	pop    %esi
56a4e4:	5b                   	pop    %ebx
56a4e5:	c3                   	ret
56a4e6:	90                   	nop
56a4e7:	90                   	nop
56a4e8:	53                   	push   %ebx
56a4e9:	56                   	push   %esi
56a4ea:	57                   	push   %edi
56a4eb:	83 c4 ec             	add    $0xffffffec,%esp
56a4ee:	8b 40 0c             	mov    0xc(%eax),%eax
56a4f1:	8b 58 28             	mov    0x28(%eax),%ebx
56a4f4:	8b 50 2c             	mov    0x2c(%eax),%edx
56a4f7:	8b f3                	mov    %ebx,%esi
56a4f9:	8b ca                	mov    %edx,%ecx
56a4fb:	c1 e3 07             	shl    $0x7,%ebx
56a4fe:	03 de                	add    %esi,%ebx
56a500:	c1 e3 02             	shl    $0x2,%ebx
56a503:	03 cb                	add    %ebx,%ecx
56a505:	89 4c 24 04          	mov    %ecx,0x4(%esp)
56a509:	89 14 24             	mov    %edx,(%esp)
56a50c:	8b 54 24 04          	mov    0x4(%esp),%edx
56a510:	8b 04 24             	mov    (%esp),%eax
56a513:	3b c2                	cmp    %edx,%eax
56a515:	0f 84 f8 00 00 00    	je     0x56a613
56a51b:	8b 0c 24             	mov    (%esp),%ecx
56a51e:	8b 41 04             	mov    0x4(%ecx),%eax
56a521:	8b 0c 24             	mov    (%esp),%ecx
56a524:	8b d0                	mov    %eax,%edx
56a526:	8b f8                	mov    %eax,%edi
56a528:	0f b7 09             	movzwl (%ecx),%ecx
56a52b:	c1 e1 02             	shl    $0x2,%ecx
56a52e:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
56a531:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
56a534:	03 d1                	add    %ecx,%edx
56a536:	89 54 24 08          	mov    %edx,0x8(%esp)
56a53a:	8b 44 24 08          	mov    0x8(%esp),%eax
56a53e:	3b f8                	cmp    %eax,%edi
56a540:	0f 84 b7 00 00 00    	je     0x56a5fd
56a546:	8b 47 34             	mov    0x34(%edi),%eax
56a549:	85 c0                	test   %eax,%eax
56a54b:	0f 84 9d 00 00 00    	je     0x56a5ee
56a551:	8b d0                	mov    %eax,%edx
56a553:	8b 4f 30             	mov    0x30(%edi),%ecx
56a556:	c1 e1 02             	shl    $0x2,%ecx
56a559:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
56a55c:	03 d1                	add    %ecx,%edx
56a55e:	89 54 24 10          	mov    %edx,0x10(%esp)
56a562:	89 44 24 0c          	mov    %eax,0xc(%esp)
56a566:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a56a:	8b 54 24 10          	mov    0x10(%esp),%edx
56a56e:	3b c2                	cmp    %edx,%eax
56a570:	74 7c                	je     0x56a5ee
56a572:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56a576:	8b 41 04             	mov    0x4(%ecx),%eax
56a579:	85 c0                	test   %eax,%eax
56a57b:	74 60                	je     0x56a5dd
56a57d:	33 f6                	xor    %esi,%esi
56a57f:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a583:	8b 18                	mov    (%eax),%ebx
56a585:	eb 4f                	jmp    0x56a5d6
56a587:	8b 43 1c             	mov    0x1c(%ebx),%eax
56a58a:	85 c0                	test   %eax,%eax
56a58c:	74 44                	je     0x56a5d2
56a58e:	8b 53 2c             	mov    0x2c(%ebx),%edx
56a591:	8b 43 20             	mov    0x20(%ebx),%eax
56a594:	e8 c7 f4 00 00       	call   0x579a60
56a599:	8b 53 30             	mov    0x30(%ebx),%edx
56a59c:	8b 43 24             	mov    0x24(%ebx),%eax
56a59f:	e8 bc f4 00 00       	call   0x579a60
56a5a4:	8b 53 18             	mov    0x18(%ebx),%edx
56a5a7:	c1 e2 02             	shl    $0x2,%edx
56a5aa:	8d 14 52             	lea    (%edx,%edx,2),%edx
56a5ad:	8d 14 92             	lea    (%edx,%edx,4),%edx
56a5b0:	8b 43 1c             	mov    0x1c(%ebx),%eax
56a5b3:	03 d0                	add    %eax,%edx
56a5b5:	3b d0                	cmp    %eax,%edx
56a5b7:	74 19                	je     0x56a5d2
56a5b9:	8b 48 30             	mov    0x30(%eax),%ecx
56a5bc:	89 48 28             	mov    %ecx,0x28(%eax)
56a5bf:	8b 48 38             	mov    0x38(%eax),%ecx
56a5c2:	89 48 08             	mov    %ecx,0x8(%eax)
56a5c5:	8b 48 34             	mov    0x34(%eax),%ecx
56a5c8:	89 48 10             	mov    %ecx,0x10(%eax)
56a5cb:	83 c0 3c             	add    $0x3c,%eax
56a5ce:	3b d0                	cmp    %eax,%edx
56a5d0:	75 e7                	jne    0x56a5b9
56a5d2:	46                   	inc    %esi
56a5d3:	83 c3 34             	add    $0x34,%ebx
56a5d6:	8b 47 20             	mov    0x20(%edi),%eax
56a5d9:	3b f0                	cmp    %eax,%esi
56a5db:	72 aa                	jb     0x56a587
56a5dd:	83 44 24 0c 24       	addl   $0x24,0xc(%esp)
56a5e2:	8b 54 24 0c          	mov    0xc(%esp),%edx
56a5e6:	8b 44 24 10          	mov    0x10(%esp),%eax
56a5ea:	3b d0                	cmp    %eax,%edx
56a5ec:	75 84                	jne    0x56a572
56a5ee:	83 c7 3c             	add    $0x3c,%edi
56a5f1:	8b 54 24 08          	mov    0x8(%esp),%edx
56a5f5:	3b fa                	cmp    %edx,%edi
56a5f7:	0f 85 49 ff ff ff    	jne    0x56a546
56a5fd:	81 04 24 04 02 00 00 	addl   $0x204,(%esp)
56a604:	8b 0c 24             	mov    (%esp),%ecx
56a607:	8b 44 24 04          	mov    0x4(%esp),%eax
56a60b:	3b c8                	cmp    %eax,%ecx
56a60d:	0f 85 08 ff ff ff    	jne    0x56a51b
56a613:	83 c4 14             	add    $0x14,%esp
56a616:	5f                   	pop    %edi
56a617:	5e                   	pop    %esi
56a618:	5b                   	pop    %ebx
56a619:	c3                   	ret
56a61a:	90                   	nop
56a61b:	90                   	nop
56a61c:	53                   	push   %ebx
56a61d:	56                   	push   %esi
56a61e:	57                   	push   %edi
56a61f:	83 c4 e0             	add    $0xffffffe0,%esp
56a622:	89 14 24             	mov    %edx,(%esp)
56a625:	8b 40 0c             	mov    0xc(%eax),%eax
56a628:	8b 58 28             	mov    0x28(%eax),%ebx
56a62b:	8b 50 2c             	mov    0x2c(%eax),%edx
56a62e:	8b f3                	mov    %ebx,%esi
56a630:	8b ca                	mov    %edx,%ecx
56a632:	c1 e3 07             	shl    $0x7,%ebx
56a635:	03 de                	add    %esi,%ebx
56a637:	c1 e3 02             	shl    $0x2,%ebx
56a63a:	03 cb                	add    %ebx,%ecx
56a63c:	89 4c 24 08          	mov    %ecx,0x8(%esp)
56a640:	89 54 24 04          	mov    %edx,0x4(%esp)
56a644:	8b 54 24 08          	mov    0x8(%esp),%edx
56a648:	8b 44 24 04          	mov    0x4(%esp),%eax
56a64c:	3b c2                	cmp    %edx,%eax
56a64e:	0f 84 d9 01 00 00    	je     0x56a82d
56a654:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56a658:	8b 41 04             	mov    0x4(%ecx),%eax
56a65b:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56a65f:	8b d0                	mov    %eax,%edx
56a661:	0f b7 09             	movzwl (%ecx),%ecx
56a664:	c1 e1 02             	shl    $0x2,%ecx
56a667:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
56a66a:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
56a66d:	03 d1                	add    %ecx,%edx
56a66f:	89 54 24 10          	mov    %edx,0x10(%esp)
56a673:	89 44 24 0c          	mov    %eax,0xc(%esp)
56a677:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a67b:	8b 54 24 10          	mov    0x10(%esp),%edx
56a67f:	3b c2                	cmp    %edx,%eax
56a681:	0f 84 8e 01 00 00    	je     0x56a815
56a687:	8b 44 24 0c          	mov    0xc(%esp),%eax
56a68b:	8b 40 34             	mov    0x34(%eax),%eax
56a68e:	85 c0                	test   %eax,%eax
56a690:	0f 84 6a 01 00 00    	je     0x56a800
56a696:	8b d0                	mov    %eax,%edx
56a698:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56a69c:	8b 49 30             	mov    0x30(%ecx),%ecx
56a69f:	c1 e1 02             	shl    $0x2,%ecx
56a6a2:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
56a6a5:	03 d1                	add    %ecx,%edx
56a6a7:	89 54 24 14          	mov    %edx,0x14(%esp)
56a6ab:	8b f8                	mov    %eax,%edi
56a6ad:	8b 44 24 14          	mov    0x14(%esp),%eax
56a6b1:	3b f8                	cmp    %eax,%edi
56a6b3:	0f 84 47 01 00 00    	je     0x56a800
56a6b9:	8b 57 04             	mov    0x4(%edi),%edx
56a6bc:	85 d2                	test   %edx,%edx
56a6be:	0f 84 2d 01 00 00    	je     0x56a7f1
56a6c4:	33 c9                	xor    %ecx,%ecx
56a6c6:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
56a6ca:	8b 37                	mov    (%edi),%esi
56a6cc:	e9 0d 01 00 00       	jmp    0x56a7de
56a6d1:	8b 46 1c             	mov    0x1c(%esi),%eax
56a6d4:	85 c0                	test   %eax,%eax
56a6d6:	0f 84 fb 00 00 00    	je     0x56a7d7
56a6dc:	8b 46 20             	mov    0x20(%esi),%eax
56a6df:	e8 d4 f3 00 00       	call   0x579ab8
56a6e4:	8b 46 24             	mov    0x24(%esi),%eax
56a6e7:	e8 cc f3 00 00       	call   0x579ab8
56a6ec:	8b 4e 18             	mov    0x18(%esi),%ecx
56a6ef:	8b 46 1c             	mov    0x1c(%esi),%eax
56a6f2:	c1 e1 02             	shl    $0x2,%ecx
56a6f5:	8b d0                	mov    %eax,%edx
56a6f7:	8b d8                	mov    %eax,%ebx
56a6f9:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
56a6fc:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
56a6ff:	03 d1                	add    %ecx,%edx
56a701:	89 54 24 18          	mov    %edx,0x18(%esp)
56a705:	8b 44 24 18          	mov    0x18(%esp),%eax
56a709:	3b d8                	cmp    %eax,%ebx
56a70b:	0f 84 c6 00 00 00    	je     0x56a7d7
56a711:	8b 43 14             	mov    0x14(%ebx),%eax
56a714:	e8 43 e4 00 00       	call   0x578b5c
56a719:	85 c0                	test   %eax,%eax
56a71b:	74 17                	je     0x56a734
56a71d:	68 3f 02 00 00       	push   $0x23f
56a722:	68 82 fb 69 00       	push   $0x69fb82
56a727:	68 80 fb 69 00       	push   $0x69fb80
56a72c:	e8 0f 04 ff ff       	call   0x55ab40
56a731:	83 c4 0c             	add    $0xc,%esp
56a734:	8b 13                	mov    (%ebx),%edx
56a736:	85 d2                	test   %edx,%edx
56a738:	7e 05                	jle    0x56a73f
56a73a:	8b 4b 04             	mov    0x4(%ebx),%ecx
56a73d:	eb 02                	jmp    0x56a741
56a73f:	33 c9                	xor    %ecx,%ecx
56a741:	89 4b 28             	mov    %ecx,0x28(%ebx)
56a744:	33 c0                	xor    %eax,%eax
56a746:	89 43 08             	mov    %eax,0x8(%ebx)
56a749:	c7 43 10 03 00 00 00 	movl   $0x3,0x10(%ebx)
56a750:	8b 47 0c             	mov    0xc(%edi),%eax
56a753:	8b 53 24             	mov    0x24(%ebx),%edx
56a756:	2b c2                	sub    %edx,%eax
56a758:	89 43 0c             	mov    %eax,0xc(%ebx)
56a75b:	85 c0                	test   %eax,%eax
56a75d:	7d 17                	jge    0x56a776
56a75f:	68 45 02 00 00       	push   $0x245
56a764:	68 a2 fb 69 00       	push   $0x69fba2
56a769:	68 8e fb 69 00       	push   $0x69fb8e
56a76e:	e8 cd 03 ff ff       	call   0x55ab40
56a773:	83 c4 0c             	add    $0xc,%esp
56a776:	8b c3                	mov    %ebx,%eax
56a778:	8b 56 1c             	mov    0x1c(%esi),%edx
56a77b:	2b c2                	sub    %edx,%eax
56a77d:	b9 3c 00 00 00       	mov    $0x3c,%ecx
56a782:	99                   	cltd
56a783:	f7 f9                	idiv   %ecx
56a785:	8b d0                	mov    %eax,%edx
56a787:	8b 46 24             	mov    0x24(%esi),%eax
56a78a:	e8 81 f3 00 00       	call   0x579b10
56a78f:	8b 4e 24             	mov    0x24(%esi),%ecx
56a792:	8b 53 0c             	mov    0xc(%ebx),%edx
56a795:	91                   	xchg   %eax,%ecx
56a796:	87 d1                	xchg   %edx,%ecx
56a798:	e8 3b f3 00 00       	call   0x579ad8
56a79d:	8b 0c 24             	mov    (%esp),%ecx
56a7a0:	85 c9                	test   %ecx,%ecx
56a7a2:	74 24                	je     0x56a7c8
56a7a4:	8b 13                	mov    (%ebx),%edx
56a7a6:	c1 e2 03             	shl    $0x3,%edx
56a7a9:	8d 14 d2             	lea    (%edx,%edx,8),%edx
56a7ac:	8b 43 04             	mov    0x4(%ebx),%eax
56a7af:	03 d0                	add    %eax,%edx
56a7b1:	3b d0                	cmp    %eax,%edx
56a7b3:	74 13                	je     0x56a7c8
56a7b5:	c7 40 20 ff ff ff ff 	movl   $0xffffffff,0x20(%eax)
56a7bc:	33 c9                	xor    %ecx,%ecx
56a7be:	89 48 20             	mov    %ecx,0x20(%eax)
56a7c1:	83 c0 48             	add    $0x48,%eax
56a7c4:	3b d0                	cmp    %eax,%edx
56a7c6:	75 ed                	jne    0x56a7b5
56a7c8:	83 c3 3c             	add    $0x3c,%ebx
56a7cb:	8b 44 24 18          	mov    0x18(%esp),%eax
56a7cf:	3b d8                	cmp    %eax,%ebx
56a7d1:	0f 85 3a ff ff ff    	jne    0x56a711
56a7d7:	ff 44 24 1c          	incl   0x1c(%esp)
56a7db:	83 c6 34             	add    $0x34,%esi
56a7de:	8b 54 24 0c          	mov    0xc(%esp),%edx
56a7e2:	8b 4a 20             	mov    0x20(%edx),%ecx
56a7e5:	8b 44 24 1c          	mov    0x1c(%esp),%eax
56a7e9:	3b c8                	cmp    %eax,%ecx
56a7eb:	0f 87 e0 fe ff ff    	ja     0x56a6d1
56a7f1:	83 c7 24             	add    $0x24,%edi
56a7f4:	8b 54 24 14          	mov    0x14(%esp),%edx
56a7f8:	3b fa                	cmp    %edx,%edi