56bfff:	0f af d0             	imul   %eax,%edx
56c002:	03 d5                	add    %ebp,%edx
56c004:	89 53 20             	mov    %edx,0x20(%ebx)
56c007:	8b 43 14             	mov    0x14(%ebx),%eax
56c00a:	8b 08                	mov    (%eax),%ecx
56c00c:	3b d1                	cmp    %ecx,%edx
56c00e:	7c 17                	jl     0x56c027
56c010:	68 5a 01 00 00       	push   $0x15a
56c015:	68 82 02 6a 00       	push   $0x6a0282
56c01a:	68 62 02 6a 00       	push   $0x6a0262
56c01f:	e8 1c eb fe ff       	call   0x55ab40
56c024:	83 c4 0c             	add    $0xc,%esp
56c027:	33 c0                	xor    %eax,%eax
56c029:	89 43 24             	mov    %eax,0x24(%ebx)
56c02c:	eb 20                	jmp    0x56c04e
56c02e:	8b 53 14             	mov    0x14(%ebx),%edx
56c031:	8b 4b 20             	mov    0x20(%ebx),%ecx
56c034:	c1 e1 02             	shl    $0x2,%ecx
56c037:	8b 52 04             	mov    0x4(%edx),%edx
56c03a:	03 d1                	add    %ecx,%edx
56c03c:	8b 0a                	mov    (%edx),%ecx
56c03e:	3b c1                	cmp    %ecx,%eax
56c040:	7c 09                	jl     0x56c04b
56c042:	ff 02                	incl   (%edx)
56c044:	33 c0                	xor    %eax,%eax
56c046:	e9 8c 00 00 00       	jmp    0x56c0d7
56c04b:	ff 43 24             	incl   0x24(%ebx)
56c04e:	8b 43 24             	mov    0x24(%ebx),%eax
56c051:	8b 13                	mov    (%ebx),%edx
56c053:	3b c2                	cmp    %edx,%eax
56c055:	7d 08                	jge    0x56c05f
56c057:	0f b7 4f 08          	movzwl 0x8(%edi),%ecx
56c05b:	3b c1                	cmp    %ecx,%eax
56c05d:	7c cf                	jl     0x56c02e
56c05f:	ff 43 18             	incl   0x18(%ebx)
56c062:	83 43 10 10          	addl   $0x10,0x10(%ebx)
56c066:	0f b7 57 06          	movzwl 0x6(%edi),%edx
56c06a:	8b 43 18             	mov    0x18(%ebx),%eax
56c06d:	3b d0                	cmp    %eax,%edx
56c06f:	7e 0b                	jle    0x56c07c
56c071:	8b 4b 08             	mov    0x8(%ebx),%ecx
56c074:	3b c1                	cmp    %ecx,%eax
56c076:	0f 8c 38 fc ff ff    	jl     0x56bcb4
56c07c:	8b 43 28             	mov    0x28(%ebx),%eax
56c07f:	8b 4b 30             	mov    0x30(%ebx),%ecx
56c082:	99                   	cltd
56c083:	f7 f9                	idiv   %ecx
56c085:	2b ca                	sub    %edx,%ecx
56c087:	01 4b 28             	add    %ecx,0x28(%ebx)
56c08a:	8b 43 28             	mov    0x28(%ebx),%eax
56c08d:	8b 53 40             	mov    0x40(%ebx),%edx
56c090:	3b c2                	cmp    %edx,%eax
56c092:	0f 8c 05 fc ff ff    	jl     0x56bc9d
56c098:	8b 43 2c             	mov    0x2c(%ebx),%eax
56c09b:	8b 4b 34             	mov    0x34(%ebx),%ecx
56c09e:	99                   	cltd
56c09f:	f7 7b 34             	idivl  0x34(%ebx)
56c0a2:	2b ca                	sub    %edx,%ecx
56c0a4:	01 4b 2c             	add    %ecx,0x2c(%ebx)
56c0a7:	8b 43 2c             	mov    0x2c(%ebx),%eax
56c0aa:	8b 53 44             	mov    0x44(%ebx),%edx
56c0ad:	3b c2                	cmp    %edx,%eax
56c0af:	0f 8c dd fb ff ff    	jl     0x56bc92
56c0b5:	ff 43 1c             	incl   0x1c(%ebx)
56c0b8:	33 c9                	xor    %ecx,%ecx
56c0ba:	8a 4f 02             	mov    0x2(%edi),%cl
56c0bd:	8b 43 1c             	mov    0x1c(%ebx),%eax
56c0c0:	3b c8                	cmp    %eax,%ecx
56c0c2:	7e 0e                	jle    0x56c0d2
56c0c4:	8b 53 1c             	mov    0x1c(%ebx),%edx
56c0c7:	8b 4b 04             	mov    0x4(%ebx),%ecx
56c0ca:	3b d1                	cmp    %ecx,%edx
56c0cc:	0f 8c b5 fb ff ff    	jl     0x56bc87
56c0d2:	b8 01 00 00 00       	mov    $0x1,%eax
56c0d7:	83 c4 1c             	add    $0x1c,%esp
56c0da:	5d                   	pop    %ebp
56c0db:	5f                   	pop    %edi
56c0dc:	5e                   	pop    %esi
56c0dd:	5b                   	pop    %ebx
56c0de:	c3                   	ret
56c0df:	90                   	nop
56c0e0:	53                   	push   %ebx
56c0e1:	8b d8                	mov    %eax,%ebx
56c0e3:	56                   	push   %esi
56c0e4:	57                   	push   %edi
56c0e5:	55                   	push   %ebp
56c0e6:	83 c4 e8             	add    $0xffffffe8,%esp
56c0e9:	8b 43 60             	mov    0x60(%ebx),%eax
56c0ec:	8b 7b 48             	mov    0x48(%ebx),%edi
56c0ef:	85 c0                	test   %eax,%eax
56c0f1:	0f 84 71 04 00 00    	je     0x56c568
56c0f7:	33 d2                	xor    %edx,%edx
56c0f9:	89 53 30             	mov    %edx,0x30(%ebx)
56c0fc:	33 c9                	xor    %ecx,%ecx
56c0fe:	89 4b 34             	mov    %ecx,0x34(%ebx)
56c101:	33 c0                	xor    %eax,%eax
56c103:	89 44 24 04          	mov    %eax,0x4(%esp)
56c107:	8b 43 0c             	mov    0xc(%ebx),%eax
56c10a:	e9 96 00 00 00       	jmp    0x56c1a5
56c10f:	33 d2                	xor    %edx,%edx
56c111:	8b 48 04             	mov    0x4(%eax),%ecx
56c114:	89 0c 24             	mov    %ecx,(%esp)
56c117:	eb 7b                	jmp    0x56c194
56c119:	8b 0c 24             	mov    (%esp),%ecx
56c11c:	8b 30                	mov    (%eax),%esi
56c11e:	8b 49 08             	mov    0x8(%ecx),%ecx
56c121:	03 ce                	add    %esi,%ecx
56c123:	be 01 00 00 00       	mov    $0x1,%esi
56c128:	2b ca                	sub    %edx,%ecx
56c12a:	49                   	dec    %ecx
56c12b:	d3 e6                	shl    %cl,%esi
56c12d:	0f af 70 08          	imul   0x8(%eax),%esi
56c131:	89 74 24 08          	mov    %esi,0x8(%esp)
56c135:	8b 0c 24             	mov    (%esp),%ecx
56c138:	8b 30                	mov    (%eax),%esi
56c13a:	8b 49 0c             	mov    0xc(%ecx),%ecx
56c13d:	03 ce                	add    %esi,%ecx
56c13f:	be 01 00 00 00       	mov    $0x1,%esi
56c144:	2b ca                	sub    %edx,%ecx
56c146:	49                   	dec    %ecx
56c147:	d3 e6                	shl    %cl,%esi
56c149:	8b ce                	mov    %esi,%ecx
56c14b:	8b 73 30             	mov    0x30(%ebx),%esi
56c14e:	0f af 48 0c          	imul   0xc(%eax),%ecx
56c152:	85 f6                	test   %esi,%esi
56c154:	75 06                	jne    0x56c15c
56c156:	8b 74 24 08          	mov    0x8(%esp),%esi
56c15a:	eb 14                	jmp    0x56c170
56c15c:	8b 73 30             	mov    0x30(%ebx),%esi
56c15f:	8b 6c 24 08          	mov    0x8(%esp),%ebp
56c163:	3b f5                	cmp    %ebp,%esi
56c165:	7d 05                	jge    0x56c16c
56c167:	8b 73 30             	mov    0x30(%ebx),%esi
56c16a:	eb 04                	jmp    0x56c170
56c16c:	8b 74 24 08          	mov    0x8(%esp),%esi
56c170:	89 73 30             	mov    %esi,0x30(%ebx)
56c173:	8b 73 34             	mov    0x34(%ebx),%esi
56c176:	85 f6                	test   %esi,%esi
56c178:	75 04                	jne    0x56c17e
56c17a:	8b f1                	mov    %ecx,%esi
56c17c:	eb 0e                	jmp    0x56c18c
56c17e:	8b 73 34             	mov    0x34(%ebx),%esi
56c181:	3b ce                	cmp    %esi,%ecx
56c183:	7e 05                	jle    0x56c18a
56c185:	8b 73 34             	mov    0x34(%ebx),%esi
56c188:	eb 02                	jmp    0x56c18c
56c18a:	8b f1                	mov    %ecx,%esi
56c18c:	89 73 34             	mov    %esi,0x34(%ebx)
56c18f:	42                   	inc    %edx
56c190:	83 04 24 14          	addl   $0x14,(%esp)
56c194:	8b 08                	mov    (%eax),%ecx
56c196:	3b d1                	cmp    %ecx,%edx
56c198:	0f 8c 7b ff ff ff    	jl     0x56c119
56c19e:	ff 44 24 04          	incl   0x4(%esp)
56c1a2:	83 c0 10             	add    $0x10,%eax
56c1a5:	8b 54 24 04          	mov    0x4(%esp),%edx
56c1a9:	8b 4b 08             	mov    0x8(%ebx),%ecx
56c1ac:	3b d1                	cmp    %ecx,%edx
56c1ae:	0f 8c 5b ff ff ff    	jl     0x56c10f
56c1b4:	33 c0                	xor    %eax,%eax
56c1b6:	89 43 60             	mov    %eax,0x60(%ebx)
56c1b9:	8b 53 3c             	mov    0x3c(%ebx),%edx
56c1bc:	89 53 2c             	mov    %edx,0x2c(%ebx)
56c1bf:	e9 21 04 00 00       	jmp    0x56c5e5
56c1c4:	8b 43 38             	mov    0x38(%ebx),%eax
56c1c7:	89 43 28             	mov    %eax,0x28(%ebx)
56c1ca:	e9 f9 03 00 00       	jmp    0x56c5c8
56c1cf:	0f b7 57 04          	movzwl 0x4(%edi),%edx
56c1d3:	89 53 18             	mov    %edx,0x18(%ebx)
56c1d6:	8b 4b 18             	mov    0x18(%ebx),%ecx
56c1d9:	c1 e1 04             	shl    $0x4,%ecx
56c1dc:	8b 43 0c             	mov    0xc(%ebx),%eax
56c1df:	03 c8                	add    %eax,%ecx
56c1e1:	89 4b 10             	mov    %ecx,0x10(%ebx)
56c1e4:	e9 ba 03 00 00       	jmp    0x56c5a3
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