56e179:	33 ff                	xor    %edi,%edi
56e17b:	6a 01                	push   $0x1
56e17d:	b9 01 00 00 00       	mov    $0x1,%ecx
56e182:	33 d2                	xor    %edx,%edx
56e184:	33 c0                	xor    %eax,%eax
56e186:	e8 cd 9a 00 00       	call   0x577c58
56e18b:	8b f0                	mov    %eax,%esi
56e18d:	85 c0                	test   %eax,%eax
56e18f:	0f 84 5f 01 00 00    	je     0x56e2f4
56e195:	8b 46 1c             	mov    0x1c(%esi),%eax
56e198:	8b 4e 04             	mov    0x4(%esi),%ecx
56e19b:	33 d2                	xor    %edx,%edx
56e19d:	2b d1                	sub    %ecx,%edx
56e19f:	8b 08                	mov    (%eax),%ecx
56e1a1:	c7 04 91 00 20 00 00 	movl   $0x2000,(%ecx,%edx,4)
56e1a8:	33 d2                	xor    %edx,%edx
56e1aa:	33 c0                	xor    %eax,%eax
56e1ac:	b9 01 00 00 00       	mov    $0x1,%ecx
56e1b1:	6a 01                	push   $0x1
56e1b3:	e8 a0 9a 00 00       	call   0x577c58
56e1b8:	8b f8                	mov    %eax,%edi
56e1ba:	85 c0                	test   %eax,%eax
56e1bc:	0f 84 32 01 00 00    	je     0x56e2f4
56e1c2:	8b 47 1c             	mov    0x1c(%edi),%eax
56e1c5:	8b 4f 04             	mov    0x4(%edi),%ecx
56e1c8:	33 d2                	xor    %edx,%edx
56e1ca:	2b d1                	sub    %ecx,%edx
56e1cc:	8b 08                	mov    (%eax),%ecx
56e1ce:	85 db                	test   %ebx,%ebx
56e1d0:	c7 04 91 00 20 00 00 	movl   $0x2000,(%ecx,%edx,4)
56e1d7:	0f 84 09 01 00 00    	je     0x56e2e6
56e1dd:	8b 43 08             	mov    0x8(%ebx),%eax
56e1e0:	85 c0                	test   %eax,%eax
56e1e2:	74 73                	je     0x56e257
56e1e4:	e8 83 1e 00 00       	call   0x57006c
56e1e9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
56e1ec:	8d 4d f0             	lea    -0x10(%ebp),%ecx
56e1ef:	8b 55 f8             	mov    -0x8(%ebp),%edx
56e1f2:	8b 43 08             	mov    0x8(%ebx),%eax
56e1f5:	e8 82 1e 00 00       	call   0x57007c
56e1fa:	85 c0                	test   %eax,%eax
56e1fc:	0f 85 f2 00 00 00    	jne    0x56e2f4
56e202:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56e205:	8b c6                	mov    %esi,%eax
56e207:	e8 98 b4 00 00       	call   0x5796a4
56e20c:	89 45 dc             	mov    %eax,-0x24(%ebp)
56e20f:	85 c0                	test   %eax,%eax
56e211:	0f 84 dd 00 00 00    	je     0x56e2f4
56e217:	8b c6                	mov    %esi,%eax
56e219:	e8 76 9b 00 00       	call   0x577d94
56e21e:	8b 75 dc             	mov    -0x24(%ebp),%esi
56e221:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e224:	99                   	cltd
56e225:	f7 3b                	idivl  (%ebx)
56e227:	8b 54 95 f0          	mov    -0x10(%ebp,%edx,4),%edx
56e22b:	8b c6                	mov    %esi,%eax
56e22d:	e8 76 b5 00 00       	call   0x5797a8
56e232:	89 45 dc             	mov    %eax,-0x24(%ebp)
56e235:	85 c0                	test   %eax,%eax
56e237:	0f 84 b7 00 00 00    	je     0x56e2f4
56e23d:	8b 45 f0             	mov    -0x10(%ebp),%eax
56e240:	e8 4f 9b 00 00       	call   0x577d94
56e245:	8b 45 f4             	mov    -0xc(%ebp),%eax
56e248:	e8 47 9b 00 00       	call   0x577d94
56e24d:	8b c6                	mov    %esi,%eax
56e24f:	e8 40 9b 00 00       	call   0x577d94
56e254:	8b 75 dc             	mov    -0x24(%ebp),%esi
56e257:	8b 43 0c             	mov    0xc(%ebx),%eax
56e25a:	85 c0                	test   %eax,%eax
56e25c:	74 6c                	je     0x56e2ca
56e25e:	e8 09 1e 00 00       	call   0x57006c
56e263:	89 45 e0             	mov    %eax,-0x20(%ebp)
56e266:	8d 4d e8             	lea    -0x18(%ebp),%ecx
56e269:	8b 55 10             	mov    0x10(%ebp),%edx
56e26c:	8b 43 0c             	mov    0xc(%ebx),%eax
56e26f:	e8 08 1e 00 00       	call   0x57007c
56e274:	85 c0                	test   %eax,%eax
56e276:	74 05                	je     0x56e27d
56e278:	e8 cb c8 fe ff       	call   0x55ab48
56e27d:	8b 55 e0             	mov    -0x20(%ebp),%edx
56e280:	8b c7                	mov    %edi,%eax
56e282:	e8 1d b4 00 00       	call   0x5796a4
56e287:	89 45 dc             	mov    %eax,-0x24(%ebp)
56e28a:	85 c0                	test   %eax,%eax
56e28c:	74 66                	je     0x56e2f4
56e28e:	8b c7                	mov    %edi,%eax
56e290:	e8 ff 9a 00 00       	call   0x577d94
56e295:	8b 7d dc             	mov    -0x24(%ebp),%edi
56e298:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e29b:	99                   	cltd
56e29c:	f7 3b                	idivl  (%ebx)
56e29e:	8b 54 85 e8          	mov    -0x18(%ebp,%eax,4),%edx
56e2a2:	8b c7                	mov    %edi,%eax
56e2a4:	e8 ff b4 00 00       	call   0x5797a8
56e2a9:	89 45 dc             	mov    %eax,-0x24(%ebp)
56e2ac:	85 c0                	test   %eax,%eax
56e2ae:	74 44                	je     0x56e2f4
56e2b0:	8b 45 e8             	mov    -0x18(%ebp),%eax
56e2b3:	e8 dc 9a 00 00       	call   0x577d94
56e2b8:	8b 45 ec             	mov    -0x14(%ebp),%eax
56e2bb:	e8 d4 9a 00 00       	call   0x577d94
56e2c0:	8b c7                	mov    %edi,%eax
56e2c2:	e8 cd 9a 00 00       	call   0x577d94
56e2c7:	8b 7d dc             	mov    -0x24(%ebp),%edi
56e2ca:	8b 43 28             	mov    0x28(%ebx),%eax
56e2cd:	85 c0                	test   %eax,%eax
56e2cf:	74 0a                	je     0x56e2db
56e2d1:	8b d3                	mov    %ebx,%edx
56e2d3:	e8 40 00 00 00       	call   0x56e318
56e2d8:	89 45 fc             	mov    %eax,-0x4(%ebp)
56e2db:	8b 5b 28             	mov    0x28(%ebx),%ebx
56e2de:	85 db                	test   %ebx,%ebx
56e2e0:	0f 85 f7 fe ff ff    	jne    0x56e1dd
56e2e6:	8b 55 0c             	mov    0xc(%ebp),%edx
56e2e9:	33 c0                	xor    %eax,%eax
56e2eb:	89 32                	mov    %esi,(%edx)
56e2ed:	8b 4d 08             	mov    0x8(%ebp),%ecx
56e2f0:	89 39                	mov    %edi,(%ecx)
56e2f2:	eb 19                	jmp    0x56e30d
56e2f4:	85 f6                	test   %esi,%esi
56e2f6:	74 07                	je     0x56e2ff
56e2f8:	8b c6                	mov    %esi,%eax
56e2fa:	e8 95 9a 00 00       	call   0x577d94
56e2ff:	85 ff                	test   %edi,%edi
56e301:	74 07                	je     0x56e30a
56e303:	8b c7                	mov    %edi,%eax
56e305:	e8 8a 9a 00 00       	call   0x577d94
56e30a:	83 c8 ff             	or     $0xffffffff,%eax
56e30d:	5f                   	pop    %edi
56e30e:	5e                   	pop    %esi
56e30f:	5b                   	pop    %ebx
56e310:	8b e5                	mov    %ebp,%esp
56e312:	5d                   	pop    %ebp
56e313:	c2 0c 00             	ret    $0xc
56e316:	90                   	nop
56e317:	90                   	nop
56e318:	53                   	push   %ebx
56e319:	33 c9                	xor    %ecx,%ecx
56e31b:	8d 58 18             	lea    0x18(%eax),%ebx
56e31e:	eb 0c                	jmp    0x56e32c
56e320:	3b 13                	cmp    (%ebx),%edx
56e322:	75 04                	jne    0x56e328
56e324:	8b c1                	mov    %ecx,%eax
56e326:	5b                   	pop    %ebx
56e327:	c3                   	ret
56e328:	41                   	inc    %ecx
56e329:	83 c3 04             	add    $0x4,%ebx
56e32c:	3b 48 10             	cmp    0x10(%eax),%ecx
56e32f:	7c ef                	jl     0x56e320
56e331:	68 77 02 00 00       	push   $0x277
56e336:	68 09 0c 6a 00       	push   $0x6a0c09
56e33b:	68 07 0c 6a 00       	push   $0x6a0c07
56e340:	e8 fb c7 fe ff       	call   0x55ab40
56e345:	83 c4 0c             	add    $0xc,%esp
56e348:	83 c8 ff             	or     $0xffffffff,%eax
56e34b:	5b                   	pop    %ebx
56e34c:	c3                   	ret
56e34d:	90                   	nop
56e34e:	90                   	nop
56e34f:	90                   	nop
56e350:	53                   	push   %ebx
56e351:	56                   	push   %esi
56e352:	8b f2                	mov    %edx,%esi
56e354:	83 e8 01             	sub    $0x1,%eax
56e357:	72 09                	jb     0x56e362
56e359:	75 0e                	jne    0x56e369
56e35b:	b8 01 00 00 00       	mov    $0x1,%eax
56e360:	eb 23                	jmp    0x56e385
56e362:	b8 02 00 00 00       	mov    $0x2,%eax
56e367:	eb 1c                	jmp    0x56e385
56e369:	68 87 02 00 00       	push   $0x287
56e36e:	68 16 0c 6a 00       	push   $0x6a0c16
56e373:	68 14 0c 6a 00       	push   $0x6a0c14
56e378:	e8 c3 c7 fe ff       	call   0x55ab40
56e37d:	83 c4 0c             	add    $0xc,%esp
56e380:	b8 0a 00 00 00       	mov    $0xa,%eax
56e385:	e8 2a 1b 00 00       	call   0x56feb4
56e38a:	8b d8                	mov    %eax,%ebx
56e38c:	85 db                	test   %ebx,%ebx
56e38e:	75 17                	jne    0x56e3a7
56e390:	68 8f 02 00 00       	push   $0x28f
56e395:	68 27 0c 6a 00       	push   $0x6a0c27
56e39a:	68 21 0c 6a 00       	push   $0x6a0c21
56e39f:	e8 9c c7 fe ff       	call   0x55ab40
56e3a4:	83 c4 0c             	add    $0xc,%esp
56e3a7:	8b ce                	mov    %esi,%ecx
56e3a9:	8b d3                	mov    %ebx,%edx
56e3ab:	8b c3                	mov    %ebx,%eax
56e3ad:	e8 0e f5 ff ff       	call   0x56d8c0
56e3b2:	8b f0                	mov    %eax,%esi
56e3b4:	85 f6                	test   %esi,%esi
56e3b6:	75 17                	jne    0x56e3cf
56e3b8:	68 91 02 00 00       	push   $0x291
56e3bd:	68 37 0c 6a 00       	push   $0x6a0c37
56e3c2:	68 32 0c 6a 00       	push   $0x6a0c32
56e3c7:	e8 74 c7 fe ff       	call   0x55ab40
56e3cc:	83 c4 0c             	add    $0xc,%esp
56e3cf:	8b c3                	mov    %ebx,%eax
56e3d1:	e8 5e 1b 00 00       	call   0x56ff34
56e3d6:	8b c6                	mov    %esi,%eax
56e3d8:	5e                   	pop    %esi
56e3d9:	5b                   	pop    %ebx
56e3da:	c3                   	ret
56e3db:	90                   	nop
56e3dc:	55                   	push   %ebp
56e3dd:	8b ec                	mov    %esp,%ebp
56e3df:	53                   	push   %ebx
56e3e0:	56                   	push   %esi
56e3e1:	57                   	push   %edi
56e3e2:	8b f1                	mov    %ecx,%esi
56e3e4:	8b da                	mov    %edx,%ebx
56e3e6:	8b f8                	mov    %eax,%edi
56e3e8:	85 db                	test   %ebx,%ebx
56e3ea:	7d 17                	jge    0x56e403
56e3ec:	68 b3 00 00 00       	push   $0xb3
56e3f1:	68 84 0c 6a 00       	push   $0x6a0c84
56e3f6:	68 6c 0c 6a 00       	push   $0x6a0c6c
56e3fb:	e8 40 c7 fe ff       	call   0x55ab40
56e400:	83 c4 0c             	add    $0xc,%esp
56e403:	8d 43 01             	lea    0x1(%ebx),%eax
56e406:	8b 55 18             	mov    0x18(%ebp),%edx
56e409:	d1 f8                	sar    $1,%eax
56e40b:	85 f6                	test   %esi,%esi
56e40d:	89 02                	mov    %eax,(%edx)
56e40f:	7d 17                	jge    0x56e428
56e411:	68 b4 00 00 00       	push   $0xb4
56e416:	68 a5 0c 6a 00       	push   $0x6a0ca5
56e41b:	68 8f 0c 6a 00       	push   $0x6a0c8f
56e420:	e8 1b c7 fe ff       	call   0x55ab40
56e425:	83 c4 0c             	add    $0xc,%esp
56e428:	8d 4e 01             	lea    0x1(%esi),%ecx
56e42b:	8b 45 14             	mov    0x14(%ebp),%eax
56e42e:	d1 f9                	sar    $1,%ecx
56e430:	85 db                	test   %ebx,%ebx
56e432:	89 08                	mov    %ecx,(%eax)
56e434:	7d 17                	jge    0x56e44d
56e436:	68 b5 00 00 00       	push   $0xb5
56e43b:	68 c7 0c 6a 00       	push   $0x6a0cc7
56e440:	68 b0 0c 6a 00       	push   $0x6a0cb0
56e445:	e8 f6 c6 fe ff       	call   0x55ab40
56e44a:	83 c4 0c             	add    $0xc,%esp
56e44d:	8b 55 0c             	mov    0xc(%ebp),%edx
56e450:	d1 fb                	sar    $1,%ebx
56e452:	85 f6                	test   %esi,%esi
56e454:	89 1a                	mov    %ebx,(%edx)
56e456:	7d 17                	jge    0x56e46f
56e458:	68 b6 00 00 00       	push   $0xb6
56e45d:	68 e7 0c 6a 00       	push   $0x6a0ce7
56e462:	68 d2 0c 6a 00       	push   $0x6a0cd2
56e467:	e8 d4 c6 fe ff       	call   0x55ab40
56e46c:	83 c4 0c             	add    $0xc,%esp
56e46f:	8b 4d 08             	mov    0x8(%ebp),%ecx
56e472:	d1 fe                	sar    $1,%esi
56e474:	89 31                	mov    %esi,(%ecx)
56e476:	8b 45 1c             	mov    0x1c(%ebp),%eax
56e479:	89 38                	mov    %edi,(%eax)
56e47b:	8b 55 14             	mov    0x14(%ebp),%edx
56e47e:	8b 45 18             	mov    0x18(%ebp),%eax
56e481:	8b 0a                	mov    (%edx),%ecx
56e483:	8b 10                	mov    (%eax),%edx
56e485:	2b ca                	sub    %edx,%ecx
56e487:	0f af 4d 20          	imul   0x20(%ebp),%ecx
56e48b:	c1 e1 02             	shl    $0x2,%ecx
56e48e:	03 f9                	add    %ecx,%edi
56e490:	8b 4d 10             	mov    0x10(%ebp),%ecx
56e493:	89 39                	mov    %edi,(%ecx)
56e495:	5f                   	pop    %edi
56e496:	5e                   	pop    %esi
56e497:	5b                   	pop    %ebx
56e498:	5d                   	pop    %ebp
56e499:	c2 1c 00             	ret    $0x1c
56e49c:	55                   	push   %ebp
56e49d:	8b ec                	mov    %esp,%ebp
56e49f:	50                   	push   %eax
56e4a0:	b8 04 00 00 00       	mov    $0x4,%eax
56e4a5:	81 c4 04 f0 ff ff    	add    $0xfffff004,%esp
56e4ab:	50                   	push   %eax
56e4ac:	48                   	dec    %eax
56e4ad:	75 f6                	jne    0x56e4a5
56e4af:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e4b2:	83 c4 ec             	add    $0xffffffec,%esp
56e4b5:	53                   	push   %ebx
56e4b6:	56                   	push   %esi
56e4b7:	57                   	push   %edi
56e4b8:	8b f1                	mov    %ecx,%esi
56e4ba:	8b da                	mov    %edx,%ebx
56e4bc:	89 45 fc             	mov    %eax,-0x4(%ebp)
56e4bf:	8b 7d 18             	mov    0x18(%ebp),%edi
56e4c2:	8b c6                	mov    %esi,%eax
56e4c4:	2b c3                	sub    %ebx,%eax
56e4c6:	79 17                	jns    0x56e4df
56e4c8:	68 bf 00 00 00       	push   $0xbf
56e4cd:	68 13 0d 6a 00       	push   $0x6a0d13
56e4d2:	68 f2 0c 6a 00       	push   $0x6a0cf2
56e4d7:	e8 64 c6 fe ff       	call   0x55ab40
56e4dc:	83 c4 0c             	add    $0xc,%esp
56e4df:	8d 95 e8 bf ff ff    	lea    -0x4018(%ebp),%edx
56e4e5:	2b f3                	sub    %ebx,%esi
56e4e7:	89 55 f8             	mov    %edx,-0x8(%ebp)
56e4ea:	83 c6 03             	add    $0x3,%esi
56e4ed:	8b 4d 20             	mov    0x20(%ebp),%ecx
56e4f0:	03 c9                	add    %ecx,%ecx
56e4f2:	89 4d ec             	mov    %ecx,-0x14(%ebp)
56e4f5:	8b 45 14             	mov    0x14(%ebp),%eax
56e4f8:	2b c7                	sub    %edi,%eax
56e4fa:	89 45 f4             	mov    %eax,-0xc(%ebp)
56e4fd:	c1 fe 02             	sar    $0x2,%esi
56e500:	8b 55 08             	mov    0x8(%ebp),%edx
56e503:	8b 4d 0c             	mov    0xc(%ebp),%ecx
56e506:	8b de                	mov    %esi,%ebx
56e508:	2b d1                	sub    %ecx,%edx
56e50a:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
56e510:	89 55 f0             	mov    %edx,-0x10(%ebp)
56e513:	7e 16                	jle    0x56e52b
56e515:	8b c3                	mov    %ebx,%eax
56e517:	c1 e0 02             	shl    $0x2,%eax
56e51a:	e8 5d 9e 00 00       	call   0x57837c
56e51f:	89 45 f8             	mov    %eax,-0x8(%ebp)
56e522:	85 c0                	test   %eax,%eax
56e524:	75 05                	jne    0x56e52b
56e526:	e8 1d c6 fe ff       	call   0x55ab48
56e52b:	8b 55 0c             	mov    0xc(%ebp),%edx
56e52e:	3b fa                	cmp    %edx,%edi
56e530:	0f 8e dc 00 00 00    	jle    0x56e612
56e536:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56e539:	8b 45 20             	mov    0x20(%ebp),%eax
56e53c:	c1 e0 02             	shl    $0x2,%eax
56e53f:	8b 55 fc             	mov    -0x4(%ebp),%edx
56e542:	03 c2                	add    %edx,%eax
56e544:	8b 55 1c             	mov    0x1c(%ebp),%edx
56e547:	8b 5d f4             	mov    -0xc(%ebp),%ebx
56e54a:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
56e551:	eb 26                	jmp    0x56e579
56e553:	8b 75 e8             	mov    -0x18(%ebp),%esi
56e556:	85 f6                	test   %esi,%esi
56e558:	74 07                	je     0x56e561
56e55a:	8b 32                	mov    (%edx),%esi
56e55c:	89 31                	mov    %esi,(%ecx)
56e55e:	83 c1 04             	add    $0x4,%ecx
56e561:	8b 30                	mov    (%eax),%esi
56e563:	89 32                	mov    %esi,(%edx)
56e565:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e568:	c1 e6 02             	shl    $0x2,%esi
56e56b:	03 c6                	add    %esi,%eax
56e56d:	8b 75 20             	mov    0x20(%ebp),%esi
56e570:	c1 e6 02             	shl    $0x2,%esi
56e573:	03 d6                	add    %esi,%edx
56e575:	83 75 e8 01          	xorl   $0x1,-0x18(%ebp)
56e579:	8b f3                	mov    %ebx,%esi
56e57b:	83 c3 ff             	add    $0xffffffff,%ebx