56c1e9:	33 c0                	xor    %eax,%eax
56c1eb:	8a 47 01             	mov    0x1(%edi),%al
56c1ee:	89 43 1c             	mov    %eax,0x1c(%ebx)
56c1f1:	c1 e0 02             	shl    $0x2,%eax
56c1f4:	8b 53 10             	mov    0x10(%ebx),%edx
56c1f7:	8b 4a 04             	mov    0x4(%edx),%ecx
56c1fa:	8d 04 80             	lea    (%eax,%eax,4),%eax
56c1fd:	03 c8                	add    %eax,%ecx
56c1ff:	89 4b 14             	mov    %ecx,0x14(%ebx)
56c202:	e9 7c 03 00 00       	jmp    0x56c583
56c207:	8b 4b 14             	mov    0x14(%ebx),%ecx
56c20a:	8b 09                	mov    (%ecx),%ecx
56c20c:	85 c9                	test   %ecx,%ecx
56c20e:	0f 84 68 03 00 00    	je     0x56c57c
56c214:	8b f2                	mov    %edx,%esi
56c216:	4e                   	dec    %esi
56c217:	2b f0                	sub    %eax,%esi
56c219:	8b 43 38             	mov    0x38(%ebx),%eax
56c21c:	85 c0                	test   %eax,%eax
56c21e:	7c 0e                	jl     0x56c22e
56c220:	8b ce                	mov    %esi,%ecx
56c222:	8b 53 10             	mov    0x10(%ebx),%edx
56c225:	8b 42 08             	mov    0x8(%edx),%eax
56c228:	d3 e0                	shl    %cl,%eax
56c22a:	85 c0                	test   %eax,%eax
56c22c:	7f 17                	jg     0x56c245
56c22e:	68 a9 01 00 00       	push   $0x1a9
56c233:	68 bc 02 6a 00       	push   $0x6a02bc
56c238:	68 8e 02 6a 00       	push   $0x6a028e
56c23d:	e8 fe e8 fe ff       	call   0x55ab40
56c242:	83 c4 0c             	add    $0xc,%esp
56c245:	8b ce                	mov    %esi,%ecx
56c247:	8b 53 10             	mov    0x10(%ebx),%edx
56c24a:	8b 6a 08             	mov    0x8(%edx),%ebp
56c24d:	d3 e5                	shl    %cl,%ebp
56c24f:	8b c5                	mov    %ebp,%eax
56c251:	8b 53 38             	mov    0x38(%ebx),%edx
56c254:	03 c2                	add    %edx,%eax
56c256:	48                   	dec    %eax
56c257:	99                   	cltd
56c258:	f7 fd                	idiv   %ebp
56c25a:	89 44 24 0c          	mov    %eax,0xc(%esp)
56c25e:	8b 43 3c             	mov    0x3c(%ebx),%eax
56c261:	85 c0                	test   %eax,%eax
56c263:	7c 0e                	jl     0x56c273
56c265:	8b ce                	mov    %esi,%ecx
56c267:	8b 43 10             	mov    0x10(%ebx),%eax
56c26a:	8b 50 0c             	mov    0xc(%eax),%edx
56c26d:	d3 e2                	shl    %cl,%edx
56c26f:	85 d2                	test   %edx,%edx
56c271:	7f 17                	jg     0x56c28a
56c273:	68 aa 01 00 00       	push   $0x1aa
56c278:	68 f6 02 6a 00       	push   $0x6a02f6
56c27d:	68 c8 02 6a 00       	push   $0x6a02c8
56c282:	e8 b9 e8 fe ff       	call   0x55ab40
56c287:	83 c4 0c             	add    $0xc,%esp
56c28a:	8b 43 10             	mov    0x10(%ebx),%eax
56c28d:	8b ce                	mov    %esi,%ecx
56c28f:	8b 53 3c             	mov    0x3c(%ebx),%edx
56c292:	8b 68 0c             	mov    0xc(%eax),%ebp
56c295:	d3 e5                	shl    %cl,%ebp
56c297:	8b c5                	mov    %ebp,%eax
56c299:	03 c2                	add    %edx,%eax
56c29b:	48                   	dec    %eax
56c29c:	99                   	cltd
56c29d:	f7 fd                	idiv   %ebp
56c29f:	89 44 24 10          	mov    %eax,0x10(%esp)
56c2a3:	8b 43 14             	mov    0x14(%ebx),%eax
56c2a6:	8b 68 08             	mov    0x8(%eax),%ebp
56c2a9:	8b 40 0c             	mov    0xc(%eax),%eax
56c2ac:	03 c6                	add    %esi,%eax
56c2ae:	03 ee                	add    %esi,%ebp
56c2b0:	89 44 24 14          	mov    %eax,0x14(%esp)
56c2b4:	8b 53 28             	mov    0x28(%ebx),%edx
56c2b7:	8b 4b 38             	mov    0x38(%ebx),%ecx
56c2ba:	3b d1                	cmp    %ecx,%edx
56c2bc:	75 1b                	jne    0x56c2d9
56c2be:	8b ce                	mov    %esi,%ecx
56c2c0:	8b 44 24 0c          	mov    0xc(%esp),%eax
56c2c4:	d3 e0                	shl    %cl,%eax
56c2c6:	8b cd                	mov    %ebp,%ecx
56c2c8:	ba 01 00 00 00       	mov    $0x1,%edx
56c2cd:	d3 e2                	shl    %cl,%edx
56c2cf:	8b ca                	mov    %edx,%ecx
56c2d1:	33 d2                	xor    %edx,%edx
56c2d3:	f7 f1                	div    %ecx
56c2d5:	85 d2                	test   %edx,%edx
56c2d7:	75 1a                	jne    0x56c2f3
56c2d9:	8b cd                	mov    %ebp,%ecx
56c2db:	8b 43 10             	mov    0x10(%ebx),%eax
56c2de:	8b 50 08             	mov    0x8(%eax),%edx
56c2e1:	d3 e2                	shl    %cl,%edx
56c2e3:	8b 43 28             	mov    0x28(%ebx),%eax
56c2e6:	8b ca                	mov    %edx,%ecx
56c2e8:	99                   	cltd
56c2e9:	f7 f9                	idiv   %ecx
56c2eb:	85 d2                	test   %edx,%edx
56c2ed:	0f 85 89 02 00 00    	jne    0x56c57c
56c2f3:	8b 6b 2c             	mov    0x2c(%ebx),%ebp
56c2f6:	8b 43 3c             	mov    0x3c(%ebx),%eax
56c2f9:	3b e8                	cmp    %eax,%ebp
56c2fb:	75 1d                	jne    0x56c31a
56c2fd:	8b ce                	mov    %esi,%ecx
56c2ff:	8b 44 24 10          	mov    0x10(%esp),%eax
56c303:	d3 e0                	shl    %cl,%eax
56c305:	8b 4c 24 14          	mov    0x14(%esp),%ecx
56c309:	ba 01 00 00 00       	mov    $0x1,%edx
56c30e:	d3 e2                	shl    %cl,%edx
56c310:	8b ca                	mov    %edx,%ecx
56c312:	33 d2                	xor    %edx,%edx
56c314:	f7 f1                	div    %ecx
56c316:	85 d2                	test   %edx,%edx
56c318:	75 1b                	jne    0x56c335
56c31a:	8b 4c 24 14          	mov    0x14(%esp),%ecx
56c31e:	8b 43 10             	mov    0x10(%ebx),%eax
56c321:	8b 50 0c             	mov    0xc(%eax),%edx
56c324:	d3 e2                	shl    %cl,%edx
56c326:	8b c5                	mov    %ebp,%eax
56c328:	8b ca                	mov    %edx,%ecx
56c32a:	99                   	cltd
56c32b:	f7 f9                	idiv   %ecx
56c32d:	85 d2                	test   %edx,%edx
56c32f:	0f 85 47 02 00 00    	jne    0x56c57c
56c335:	8b 43 28             	mov    0x28(%ebx),%eax
56c338:	85 c0                	test   %eax,%eax
56c33a:	7c 0e                	jl     0x56c34a
56c33c:	8b ce                	mov    %esi,%ecx
56c33e:	8b 53 10             	mov    0x10(%ebx),%edx
56c341:	8b 42 08             	mov    0x8(%edx),%eax
56c344:	d3 e0                	shl    %cl,%eax
56c346:	85 c0                	test   %eax,%eax
56c348:	7f 17                	jg     0x56c361
56c34a:	68 b2 01 00 00       	push   $0x1b2
56c34f:	68 2b 03 6a 00       	push   $0x6a032b
56c354:	68 02 03 6a 00       	push   $0x6a0302
56c359:	e8 e2 e7 fe ff       	call   0x55ab40
56c35e:	83 c4 0c             	add    $0xc,%esp
56c361:	8b ce                	mov    %esi,%ecx
56c363:	8b 53 10             	mov    0x10(%ebx),%edx
56c366:	8b 6a 08             	mov    0x8(%edx),%ebp
56c369:	d3 e5                	shl    %cl,%ebp
56c36b:	8b c5                	mov    %ebp,%eax
56c36d:	8b 53 28             	mov    0x28(%ebx),%edx
56c370:	03 c2                	add    %edx,%eax
56c372:	48                   	dec    %eax
56c373:	99                   	cltd
56c374:	f7 fd                	idiv   %ebp
56c376:	85 c0                	test   %eax,%eax
56c378:	7c 0a                	jl     0x56c384
56c37a:	8b 43 14             	mov    0x14(%ebx),%eax
56c37d:	8b 48 08             	mov    0x8(%eax),%ecx
56c380:	85 c9                	test   %ecx,%ecx
56c382:	7f 17                	jg     0x56c39b
56c384:	68 b2 01 00 00       	push   $0x1b2
56c389:	68 25 04 6a 00       	push   $0x6a0425
56c38e:	68 37 03 6a 00       	push   $0x6a0337
56c393:	e8 a8 e7 fe ff       	call   0x55ab40
56c398:	83 c4 0c             	add    $0xc,%esp
56c39b:	8b 43 28             	mov    0x28(%ebx),%eax
56c39e:	85 c0                	test   %eax,%eax
56c3a0:	7c 0e                	jl     0x56c3b0
56c3a2:	8b ce                	mov    %esi,%ecx
56c3a4:	8b 53 10             	mov    0x10(%ebx),%edx
56c3a7:	8b 42 08             	mov    0x8(%edx),%eax
56c3aa:	d3 e0                	shl    %cl,%eax
56c3ac:	85 c0                	test   %eax,%eax
56c3ae:	7f 17                	jg     0x56c3c7
56c3b0:	68 b2 01 00 00       	push   $0x1b2
56c3b5:	68 5a 04 6a 00       	push   $0x6a045a
56c3ba:	68 31 04 6a 00       	push   $0x6a0431
56c3bf:	e8 7c e7 fe ff       	call   0x55ab40
56c3c4:	83 c4 0c             	add    $0xc,%esp
56c3c7:	8b 53 10             	mov    0x10(%ebx),%edx
56c3ca:	8b ce                	mov    %esi,%ecx
56c3cc:	8b 42 08             	mov    0x8(%edx),%eax
56c3cf:	8b 53 28             	mov    0x28(%ebx),%edx
56c3d2:	d3 e0                	shl    %cl,%eax
56c3d4:	03 c2                	add    %edx,%eax
56c3d6:	8b 53 10             	mov    0x10(%ebx),%edx
56c3d9:	8b ce                	mov    %esi,%ecx
56c3db:	48                   	dec    %eax
56c3dc:	8b 52 08             	mov    0x8(%edx),%edx
56c3df:	d3 e2                	shl    %cl,%edx
56c3e1:	8b ca                	mov    %edx,%ecx
56c3e3:	99                   	cltd
56c3e4:	f7 f9                	idiv   %ecx
56c3e6:	8b 53 14             	mov    0x14(%ebx),%edx
56c3e9:	8b 4a 08             	mov    0x8(%edx),%ecx
56c3ec:	d3 f8                	sar    %cl,%eax
56c3ee:	50                   	push   %eax
56c3ef:	8b 43 14             	mov    0x14(%ebx),%eax
56c3f2:	8b 40 08             	mov    0x8(%eax),%eax
56c3f5:	85 c0                	test   %eax,%eax
56c3f7:	7f 17                	jg     0x56c410
56c3f9:	68 b3 01 00 00       	push   $0x1b3
56c3fe:	68 90 04 6a 00       	push   $0x6a0490
56c403:	68 66 04 6a 00       	push   $0x6a0466
56c408:	e8 33 e7 fe ff       	call   0x55ab40
56c40d:	83 c4 0c             	add    $0xc,%esp
56c410:	8b 53 14             	mov    0x14(%ebx),%edx
56c413:	8b 44 24 10          	mov    0x10(%esp),%eax
56c417:	8b 4a 08             	mov    0x8(%edx),%ecx
56c41a:	5a                   	pop    %edx
56c41b:	d3 e8                	shr    %cl,%eax
56c41d:	2b d0                	sub    %eax,%edx
56c41f:	8b 4b 2c             	mov    0x2c(%ebx),%ecx
56c422:	85 c9                	test   %ecx,%ecx
56c424:	8b ea                	mov    %edx,%ebp
56c426:	7c 0e                	jl     0x56c436
56c428:	8b ce                	mov    %esi,%ecx
56c42a:	8b 43 10             	mov    0x10(%ebx),%eax
56c42d:	8b 50 0c             	mov    0xc(%eax),%edx
56c430:	d3 e2                	shl    %cl,%edx
56c432:	85 d2                	test   %edx,%edx
56c434:	7f 17                	jg     0x56c44d
56c436:	68 b5 01 00 00       	push   $0x1b5
56c43b:	68 c5 04 6a 00       	push   $0x6a04c5
56c440:	68 9c 04 6a 00       	push   $0x6a049c
56c445:	e8 f6 e6 fe ff       	call   0x55ab40
56c44a:	83 c4 0c             	add    $0xc,%esp
56c44d:	8b 43 10             	mov    0x10(%ebx),%eax
56c450:	8b ce                	mov    %esi,%ecx
56c452:	8b 53 2c             	mov    0x2c(%ebx),%edx
56c455:	8b 40 0c             	mov    0xc(%eax),%eax
56c458:	d3 e0                	shl    %cl,%eax
56c45a:	03 c2                	add    %edx,%eax
56c45c:	8b 53 10             	mov    0x10(%ebx),%edx
56c45f:	8b ce                	mov    %esi,%ecx
56c461:	48                   	dec    %eax
56c462:	8b 52 0c             	mov    0xc(%edx),%edx
56c465:	d3 e2                	shl    %cl,%edx
56c467:	8b ca                	mov    %edx,%ecx
56c469:	99                   	cltd
56c46a:	f7 f9                	idiv   %ecx
56c46c:	85 c0                	test   %eax,%eax
56c46e:	7c 0a                	jl     0x56c47a
56c470:	8b 43 14             	mov    0x14(%ebx),%eax
56c473:	8b 40 0c             	mov    0xc(%eax),%eax
56c476:	85 c0                	test   %eax,%eax
56c478:	7f 17                	jg     0x56c491
56c47a:	68 b5 01 00 00       	push   $0x1b5
56c47f:	68 c0 05 6a 00       	push   $0x6a05c0
56c484:	68 d1 04 6a 00       	push   $0x6a04d1
56c489:	e8 b2 e6 fe ff       	call   0x55ab40
56c48e:	83 c4 0c             	add    $0xc,%esp
56c491:	8b 53 2c             	mov    0x2c(%ebx),%edx
56c494:	85 d2                	test   %edx,%edx
56c496:	7c 0e                	jl     0x56c4a6
56c498:	8b ce                	mov    %esi,%ecx
56c49a:	8b 43 10             	mov    0x10(%ebx),%eax
56c49d:	8b 50 0c             	mov    0xc(%eax),%edx
56c4a0:	d3 e2                	shl    %cl,%edx
56c4a2:	85 d2                	test   %edx,%edx
56c4a4:	7f 17                	jg     0x56c4bd
56c4a6:	68 b5 01 00 00       	push   $0x1b5
56c4ab:	68 f5 05 6a 00       	push   $0x6a05f5
56c4b0:	68 cc 05 6a 00       	push   $0x6a05cc
56c4b5:	e8 86 e6 fe ff       	call   0x55ab40
56c4ba:	83 c4 0c             	add    $0xc,%esp
56c4bd:	8b 43 10             	mov    0x10(%ebx),%eax
56c4c0:	8b ce                	mov    %esi,%ecx
56c4c2:	8b 53 2c             	mov    0x2c(%ebx),%edx
56c4c5:	8b 40 0c             	mov    0xc(%eax),%eax
56c4c8:	d3 e0                	shl    %cl,%eax
56c4ca:	03 c2                	add    %edx,%eax
56c4cc:	8b 53 10             	mov    0x10(%ebx),%edx
56c4cf:	8b ce                	mov    %esi,%ecx
56c4d1:	48                   	dec    %eax
56c4d2:	8b 52 0c             	mov    0xc(%edx),%edx
56c4d5:	d3 e2                	shl    %cl,%edx
56c4d7:	8b ca                	mov    %edx,%ecx
56c4d9:	99                   	cltd
56c4da:	f7 f9                	idiv   %ecx
56c4dc:	8b 53 14             	mov    0x14(%ebx),%edx
56c4df:	8b 4a 0c             	mov    0xc(%edx),%ecx
56c4e2:	d3 f8                	sar    %cl,%eax
56c4e4:	50                   	push   %eax
56c4e5:	8b 43 14             	mov    0x14(%ebx),%eax
56c4e8:	8b 40 0c             	mov    0xc(%eax),%eax
56c4eb:	85 c0                	test   %eax,%eax
56c4ed:	7f 17                	jg     0x56c506
56c4ef:	68 b6 01 00 00       	push   $0x1b6
56c4f4:	68 2c 06 6a 00       	push   $0x6a062c
56c4f9:	68 01 06 6a 00       	push   $0x6a0601
56c4fe:	e8 3d e6 fe ff       	call   0x55ab40
56c503:	83 c4 0c             	add    $0xc,%esp
56c506:	8b 53 14             	mov    0x14(%ebx),%edx
56c509:	8b 44 24 14          	mov    0x14(%esp),%eax
56c50d:	8b 4a 0c             	mov    0xc(%edx),%ecx
56c510:	5a                   	pop    %edx
56c511:	d3 e8                	shr    %cl,%eax
56c513:	92                   	xchg   %eax,%edx
56c514:	2b c2                	sub    %edx,%eax
56c516:	8b 53 14             	mov    0x14(%ebx),%edx
56c519:	8b 52 10             	mov    0x10(%edx),%edx
56c51c:	0f af d0             	imul   %eax,%edx
56c51f:	03 d5                	add    %ebp,%edx
56c521:	89 53 20             	mov    %edx,0x20(%ebx)
56c524:	8b 43 14             	mov    0x14(%ebx),%eax
56c527:	8b 08                	mov    (%eax),%ecx
56c529:	3b d1                	cmp    %ecx,%edx
56c52b:	7c 17                	jl     0x56c544
56c52d:	68 b8 01 00 00       	push   $0x1b8
56c532:	68 58 06 6a 00       	push   $0x6a0658
56c537:	68 38 06 6a 00       	push   $0x6a0638
56c53c:	e8 ff e5 fe ff       	call   0x55ab40
56c541:	83 c4 0c             	add    $0xc,%esp
56c544:	33 c0                	xor    %eax,%eax
56c546:	89 43 24             	mov    %eax,0x24(%ebx)
56c549:	eb 20                	jmp    0x56c56b
56c54b:	8b 53 14             	mov    0x14(%ebx),%edx
56c54e:	8b 4b 20             	mov    0x20(%ebx),%ecx
56c551:	c1 e1 02             	shl    $0x2,%ecx
56c554:	8b 52 04             	mov    0x4(%edx),%edx
56c557:	03 d1                	add    %ecx,%edx
56c559:	8b 0a                	mov    (%edx),%ecx
56c55b:	3b c1                	cmp    %ecx,%eax
56c55d:	7c 09                	jl     0x56c568
56c55f:	ff 02                	incl   (%edx)
56c561:	33 c0                	xor    %eax,%eax
56c563:	e9 90 00 00 00       	jmp    0x56c5f8
56c568:	ff 43 24             	incl   0x24(%ebx)
56c56b:	8b 43 24             	mov    0x24(%ebx),%eax
56c56e:	8b 13                	mov    (%ebx),%edx
56c570:	3b c2                	cmp    %edx,%eax
56c572:	7d 08                	jge    0x56c57c
56c574:	0f b7 4f 08          	movzwl 0x8(%edi),%ecx
56c578:	3b c1                	cmp    %ecx,%eax
56c57a:	7c cf                	jl     0x56c54b
56c57c:	ff 43 1c             	incl   0x1c(%ebx)
56c57f:	83 43 14 14          	addl   $0x14,0x14(%ebx)
56c583:	8b 53 10             	mov    0x10(%ebx),%edx
56c586:	8b 12                	mov    (%edx),%edx
56c588:	8b 43 1c             	mov    0x1c(%ebx),%eax
56c58b:	3b d0                	cmp    %eax,%edx
56c58d:	7e 0d                	jle    0x56c59c
56c58f:	33 c9                	xor    %ecx,%ecx
56c591:	8a 4f 02             	mov    0x2(%edi),%cl
56c594:	3b c1                	cmp    %ecx,%eax
56c596:	0f 8c 6b fc ff ff    	jl     0x56c207
56c59c:	ff 43 18             	incl   0x18(%ebx)
56c59f:	83 43 10 10          	addl   $0x10,0x10(%ebx)
56c5a3:	8b 43 18             	mov    0x18(%ebx),%eax
56c5a6:	8b 53 08             	mov    0x8(%ebx),%edx
56c5a9:	3b c2                	cmp    %edx,%eax
56c5ab:	7d 0c                	jge    0x56c5b9
56c5ad:	0f b7 4f 06          	movzwl 0x6(%edi),%ecx
56c5b1:	3b c1                	cmp    %ecx,%eax
56c5b3:	0f 8c 30 fc ff ff    	jl     0x56c1e9
56c5b9:	8b 43 28             	mov    0x28(%ebx),%eax