56a1d4:	03 c8                	add    %eax,%ecx
56a1d6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
56a1d9:	8b 55 10             	mov    0x10(%ebp),%edx
56a1dc:	8b 4d f0             	mov    -0x10(%ebp),%ecx
56a1df:	c1 e2 02             	shl    $0x2,%edx
56a1e2:	8b 41 04             	mov    0x4(%ecx),%eax
56a1e5:	8d 14 52             	lea    (%edx,%edx,2),%edx
56a1e8:	8d 14 92             	lea    (%edx,%edx,4),%edx
56a1eb:	03 c2                	add    %edx,%eax
56a1ed:	8b 50 30             	mov    0x30(%eax),%edx
56a1f0:	8b 48 34             	mov    0x34(%eax),%ecx
56a1f3:	c1 e2 02             	shl    $0x2,%edx
56a1f6:	8d 14 d2             	lea    (%edx,%edx,8),%edx
56a1f9:	03 ca                	add    %edx,%ecx
56a1fb:	89 4d e8             	mov    %ecx,-0x18(%ebp)
56a1fe:	8b 40 34             	mov    0x34(%eax),%eax
56a201:	89 45 ec             	mov    %eax,-0x14(%ebp)
56a204:	8b 45 e8             	mov    -0x18(%ebp),%eax
56a207:	8b 4d ec             	mov    -0x14(%ebp),%ecx
56a20a:	3b c8                	cmp    %eax,%ecx
56a20c:	0f 84 95 01 00 00    	je     0x56a3a7
56a212:	8b 55 ec             	mov    -0x14(%ebp),%edx
56a215:	8b 4a 04             	mov    0x4(%edx),%ecx
56a218:	85 c9                	test   %ecx,%ecx
56a21a:	0f 84 75 01 00 00    	je     0x56a395
56a220:	8b 45 ec             	mov    -0x14(%ebp),%eax
56a223:	8b 4d 0c             	mov    0xc(%ebp),%ecx
56a226:	8b 10                	mov    (%eax),%edx
56a228:	8b c1                	mov    %ecx,%eax
56a22a:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
56a22d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
56a230:	c1 e1 02             	shl    $0x2,%ecx
56a233:	03 d1                	add    %ecx,%edx
56a235:	89 55 ac             	mov    %edx,-0x54(%ebp)
56a238:	8b 55 ac             	mov    -0x54(%ebp),%edx
56a23b:	8b 4a 1c             	mov    0x1c(%edx),%ecx
56a23e:	85 c9                	test   %ecx,%ecx
56a240:	0f 84 4f 01 00 00    	je     0x56a395
56a246:	8b 45 ac             	mov    -0x54(%ebp),%eax
56a249:	8b 4d ac             	mov    -0x54(%ebp),%ecx
56a24c:	8b 50 1c             	mov    0x1c(%eax),%edx
56a24f:	8b 41 18             	mov    0x18(%ecx),%eax
56a252:	c1 e0 02             	shl    $0x2,%eax
56a255:	8d 04 40             	lea    (%eax,%eax,2),%eax
56a258:	8d 04 80             	lea    (%eax,%eax,4),%eax
56a25b:	03 d0                	add    %eax,%edx
56a25d:	89 55 e0             	mov    %edx,-0x20(%ebp)
56a260:	8b 55 ac             	mov    -0x54(%ebp),%edx
56a263:	8b 4a 1c             	mov    0x1c(%edx),%ecx
56a266:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
56a269:	8b 45 e4             	mov    -0x1c(%ebp),%eax
56a26c:	8b 55 e0             	mov    -0x20(%ebp),%edx
56a26f:	3b c2                	cmp    %edx,%eax
56a271:	0f 84 1e 01 00 00    	je     0x56a395
56a277:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56a27a:	8b 59 28             	mov    0x28(%ecx),%ebx
56a27d:	85 db                	test   %ebx,%ebx
56a27f:	0f 84 fe 00 00 00    	je     0x56a383
56a285:	8b 43 20             	mov    0x20(%ebx),%eax
56a288:	8b 55 08             	mov    0x8(%ebp),%edx
56a28b:	3b c2                	cmp    %edx,%eax
56a28d:	74 35                	je     0x56a2c4
56a28f:	8b 4b 20             	mov    0x20(%ebx),%ecx
56a292:	85 c9                	test   %ecx,%ecx
56a294:	0f 8c e9 00 00 00    	jl     0x56a383
56a29a:	8b 43 20             	mov    0x20(%ebx),%eax
56a29d:	8b 55 08             	mov    0x8(%ebp),%edx
56a2a0:	3b c2                	cmp    %edx,%eax
56a2a2:	0f 8f db 00 00 00    	jg     0x56a383
56a2a8:	68 9a 01 00 00       	push   $0x19a
56a2ad:	68 36 fb 69 00       	push   $0x69fb36
56a2b2:	68 0f fb 69 00       	push   $0x69fb0f
56a2b7:	e8 84 08 ff ff       	call   0x55ab40
56a2bc:	83 c4 0c             	add    $0xc,%esp
56a2bf:	e9 bf 00 00 00       	jmp    0x56a383
56a2c4:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56a2c7:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56a2ca:	8b 41 04             	mov    0x4(%ecx),%eax
56a2cd:	8b 0a                	mov    (%edx),%ecx
56a2cf:	c1 e1 03             	shl    $0x3,%ecx
56a2d2:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
56a2d5:	03 c1                	add    %ecx,%eax
56a2d7:	89 45 d4             	mov    %eax,-0x2c(%ebp)
56a2da:	89 5d dc             	mov    %ebx,-0x24(%ebp)
56a2dd:	8b 7d dc             	mov    -0x24(%ebp),%edi
56a2e0:	eb 03                	jmp    0x56a2e5
56a2e2:	83 c7 48             	add    $0x48,%edi
56a2e5:	8b 45 d4             	mov    -0x2c(%ebp),%eax
56a2e8:	3b f8                	cmp    %eax,%edi
56a2ea:	74 0a                	je     0x56a2f6
56a2ec:	8b 57 20             	mov    0x20(%edi),%edx
56a2ef:	8b 4d 08             	mov    0x8(%ebp),%ecx
56a2f2:	3b d1                	cmp    %ecx,%edx
56a2f4:	74 ec                	je     0x56a2e2
56a2f6:	8d 47 b8             	lea    -0x48(%edi),%eax
56a2f9:	89 45 d8             	mov    %eax,-0x28(%ebp)
56a2fc:	8b c7                	mov    %edi,%eax
56a2fe:	8b 55 dc             	mov    -0x24(%ebp),%edx
56a301:	2b c2                	sub    %edx,%eax
56a303:	b9 48 00 00 00       	mov    $0x48,%ecx
56a308:	99                   	cltd
56a309:	f7 f9                	idiv   %ecx
56a30b:	8b d8                	mov    %eax,%ebx
56a30d:	8b 45 dc             	mov    -0x24(%ebp),%eax
56a310:	8b 10                	mov    (%eax),%edx
56a312:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56a315:	8b 41 14             	mov    0x14(%ecx),%eax
56a318:	33 c9                	xor    %ecx,%ecx
56a31a:	e8 49 e8 00 00       	call   0x578b68
56a31f:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56a322:	8b 42 14             	mov    0x14(%edx),%eax
56a325:	e8 ce e8 00 00       	call   0x578bf8
56a32a:	8b 55 dc             	mov    -0x24(%ebp),%edx
56a32d:	8b 0a                	mov    (%edx),%ecx
56a32f:	3b c1                	cmp    %ecx,%eax
56a331:	74 17                	je     0x56a34a
56a333:	68 a8 01 00 00       	push   $0x1a8
56a338:	68 74 fb 69 00       	push   $0x69fb74
56a33d:	68 42 fb 69 00       	push   $0x69fb42
56a342:	e8 f9 07 ff ff       	call   0x55ab40
56a347:	83 c4 0c             	add    $0xc,%esp
56a34a:	8b 45 d8             	mov    -0x28(%ebp),%eax
56a34d:	8b 55 dc             	mov    -0x24(%ebp),%edx
56a350:	8b 48 04             	mov    0x4(%eax),%ecx
56a353:	8b 02                	mov    (%edx),%eax
56a355:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56a358:	2b c8                	sub    %eax,%ecx
56a35a:	8b 45 f8             	mov    -0x8(%ebp),%eax
56a35d:	8b 52 14             	mov    0x14(%edx),%edx
56a360:	e8 c3 eb 00 00       	call   0x578f28
56a365:	85 c0                	test   %eax,%eax
56a367:	74 05                	je     0x56a36e
56a369:	83 c8 ff             	or     $0xffffffff,%eax
56a36c:	eb 3b                	jmp    0x56a3a9
56a36e:	8b 55 d4             	mov    -0x2c(%ebp),%edx
56a371:	3b fa                	cmp    %edx,%edi
56a373:	75 02                	jne    0x56a377
56a375:	33 ff                	xor    %edi,%edi
56a377:	8b 45 e4             	mov    -0x1c(%ebp),%eax
56a37a:	89 78 28             	mov    %edi,0x28(%eax)
56a37d:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56a380:	01 5a 08             	add    %ebx,0x8(%edx)
56a383:	83 45 e4 3c          	addl   $0x3c,-0x1c(%ebp)
56a387:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56a38a:	8b 45 e0             	mov    -0x20(%ebp),%eax
56a38d:	3b c8                	cmp    %eax,%ecx
56a38f:	0f 85 e2 fe ff ff    	jne    0x56a277
56a395:	83 45 ec 24          	addl   $0x24,-0x14(%ebp)
56a399:	8b 55 ec             	mov    -0x14(%ebp),%edx
56a39c:	8b 4d e8             	mov    -0x18(%ebp),%ecx
56a39f:	3b d1                	cmp    %ecx,%edx
56a3a1:	0f 85 6b fe ff ff    	jne    0x56a212
56a3a7:	33 c0                	xor    %eax,%eax
56a3a9:	5f                   	pop    %edi
56a3aa:	5e                   	pop    %esi
56a3ab:	5b                   	pop    %ebx
56a3ac:	8b e5                	mov    %ebp,%esp
56a3ae:	5d                   	pop    %ebp
56a3af:	c2 0c 00             	ret    $0xc
56a3b2:	90                   	nop
56a3b3:	90                   	nop
56a3b4:	53                   	push   %ebx
56a3b5:	56                   	push   %esi
56a3b6:	57                   	push   %edi
56a3b7:	83 c4 ec             	add    $0xffffffec,%esp
56a3ba:	8b 40 0c             	mov    0xc(%eax),%eax
56a3bd:	8b 58 28             	mov    0x28(%eax),%ebx
56a3c0:	8b 50 2c             	mov    0x2c(%eax),%edx
56a3c3:	8b f3                	mov    %ebx,%esi
56a3c5:	8b ca                	mov    %edx,%ecx
56a3c7:	c1 e3 07             	shl    $0x7,%ebx
56a3ca:	03 de                	add    %esi,%ebx
56a3cc:	c1 e3 02             	shl    $0x2,%ebx
56a3cf:	03 cb                	add    %ebx,%ecx
56a3d1:	89 4c 24 04          	mov    %ecx,0x4(%esp)
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