56dfba:	3b fa                	cmp    %edx,%edi
56dfbc:	7c ea                	jl     0x56dfa8
56dfbe:	8b 46 08             	mov    0x8(%esi),%eax
56dfc1:	85 c0                	test   %eax,%eax
56dfc3:	74 05                	je     0x56dfca
56dfc5:	e8 6a 1f 00 00       	call   0x56ff34
56dfca:	8b 46 0c             	mov    0xc(%esi),%eax
56dfcd:	85 c0                	test   %eax,%eax
56dfcf:	74 05                	je     0x56dfd6
56dfd1:	e8 5e 1f 00 00       	call   0x56ff34
56dfd6:	8b c6                	mov    %esi,%eax
56dfd8:	e8 a7 a3 00 00       	call   0x578384
56dfdd:	5f                   	pop    %edi
56dfde:	5e                   	pop    %esi
56dfdf:	5b                   	pop    %ebx
56dfe0:	c3                   	ret
56dfe1:	90                   	nop
56dfe2:	90                   	nop
56dfe3:	90                   	nop
56dfe4:	55                   	push   %ebp
56dfe5:	8b ec                	mov    %esp,%ebp
56dfe7:	83 c4 ac             	add    $0xffffffac,%esp
56dfea:	53                   	push   %ebx
56dfeb:	56                   	push   %esi
56dfec:	57                   	push   %edi
56dfed:	8b d9                	mov    %ecx,%ebx
56dfef:	89 55 f8             	mov    %edx,-0x8(%ebp)
56dff2:	89 45 fc             	mov    %eax,-0x4(%ebp)
56dff5:	8b 7d 18             	mov    0x18(%ebp),%edi
56dff8:	8b 75 1c             	mov    0x1c(%ebp),%esi
56dffb:	8b 45 fc             	mov    -0x4(%ebp),%eax
56dffe:	85 c0                	test   %eax,%eax
56e000:	74 1e                	je     0x56e020
56e002:	56                   	push   %esi
56e003:	57                   	push   %edi
56e004:	8b 55 14             	mov    0x14(%ebp),%edx
56e007:	8d 4d f4             	lea    -0xc(%ebp),%ecx
56e00a:	52                   	push   %edx
56e00b:	6a 02                	push   $0x2
56e00d:	51                   	push   %ecx
56e00e:	8d 45 cc             	lea    -0x34(%ebp),%eax
56e011:	50                   	push   %eax
56e012:	8b cb                	mov    %ebx,%ecx
56e014:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e017:	33 d2                	xor    %edx,%edx
56e019:	e8 1e 1f 00 00       	call   0x56ff3c
56e01e:	eb 19                	jmp    0x56e039
56e020:	8d 55 cc             	lea    -0x34(%ebp),%edx
56e023:	8b c3                	mov    %ebx,%eax
56e025:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
56e02c:	89 02                	mov    %eax,(%edx)
56e02e:	8b d7                	mov    %edi,%edx
56e030:	89 55 d0             	mov    %edx,-0x30(%ebp)
56e033:	89 45 d4             	mov    %eax,-0x2c(%ebp)
56e036:	89 55 d8             	mov    %edx,-0x28(%ebp)
56e039:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56e03c:	85 c9                	test   %ecx,%ecx
56e03e:	74 21                	je     0x56e061
56e040:	56                   	push   %esi
56e041:	57                   	push   %edi
56e042:	8b 45 14             	mov    0x14(%ebp),%eax
56e045:	8d 55 f0             	lea    -0x10(%ebp),%edx
56e048:	50                   	push   %eax
56e049:	6a 02                	push   $0x2
56e04b:	52                   	push   %edx
56e04c:	8d 4d ac             	lea    -0x54(%ebp),%ecx
56e04f:	51                   	push   %ecx
56e050:	8b cb                	mov    %ebx,%ecx
56e052:	8b 45 f8             	mov    -0x8(%ebp),%eax
56e055:	ba 00 00 01 00       	mov    $0x10000,%edx
56e05a:	e8 dd 1e 00 00       	call   0x56ff3c
56e05f:	eb 1a                	jmp    0x56e07b
56e061:	8d 55 ac             	lea    -0x54(%ebp),%edx
56e064:	8b c6                	mov    %esi,%eax
56e066:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
56e06d:	89 02                	mov    %eax,(%edx)
56e06f:	8b 55 14             	mov    0x14(%ebp),%edx
56e072:	89 55 b0             	mov    %edx,-0x50(%ebp)
56e075:	89 45 b4             	mov    %eax,-0x4c(%ebp)
56e078:	89 55 b8             	mov    %edx,-0x48(%ebp)
56e07b:	8b 45 f4             	mov    -0xc(%ebp),%eax
56e07e:	f7 6d f0             	imull  -0x10(%ebp)
56e081:	89 45 ec             	mov    %eax,-0x14(%ebp)
56e084:	8b 4d 0c             	mov    0xc(%ebp),%ecx
56e087:	8b 45 ec             	mov    -0x14(%ebp),%eax
56e08a:	89 01                	mov    %eax,(%ecx)
56e08c:	33 ff                	xor    %edi,%edi
56e08e:	8b 5d 08             	mov    0x8(%ebp),%ebx
56e091:	8b 45 ec             	mov    -0x14(%ebp),%eax
56e094:	3b f8                	cmp    %eax,%edi
56e096:	0f 8d c1 00 00 00    	jge    0x56e15d
56e09c:	8b c7                	mov    %edi,%eax
56e09e:	99                   	cltd
56e09f:	f7 7d f4             	idivl  -0xc(%ebp)
56e0a2:	8b c7                	mov    %edi,%eax
56e0a4:	8b ca                	mov    %edx,%ecx
56e0a6:	99                   	cltd
56e0a7:	f7 7d f4             	idivl  -0xc(%ebp)
56e0aa:	8b d1                	mov    %ecx,%edx
56e0ac:	c1 e2 04             	shl    $0x4,%edx
56e0af:	8b 74 15 cc          	mov    -0x34(%ebp,%edx,1),%esi
56e0b3:	89 33                	mov    %esi,(%ebx)
56e0b5:	8b f0                	mov    %eax,%esi
56e0b7:	c1 e6 04             	shl    $0x4,%esi
56e0ba:	8b 74 35 ac          	mov    -0x54(%ebp,%esi,1),%esi
56e0be:	89 73 04             	mov    %esi,0x4(%ebx)
56e0c1:	8b 74 15 d0          	mov    -0x30(%ebp,%edx,1),%esi
56e0c5:	89 73 08             	mov    %esi,0x8(%ebx)
56e0c8:	8b f0                	mov    %eax,%esi
56e0ca:	c1 e6 04             	shl    $0x4,%esi
56e0cd:	8b 74 35 b0          	mov    -0x50(%ebp,%esi,1),%esi
56e0d1:	89 73 0c             	mov    %esi,0xc(%ebx)
56e0d4:	8b 74 15 d4          	mov    -0x2c(%ebp,%edx,1),%esi
56e0d8:	89 73 10             	mov    %esi,0x10(%ebx)
56e0db:	8b f0                	mov    %eax,%esi
56e0dd:	c1 e6 04             	shl    $0x4,%esi
56e0e0:	c1 e0 04             	shl    $0x4,%eax
56e0e3:	8b 74 35 b4          	mov    -0x4c(%ebp,%esi,1),%esi
56e0e7:	89 73 14             	mov    %esi,0x14(%ebx)
56e0ea:	8b 54 15 d8          	mov    -0x28(%ebp,%edx,1),%edx
56e0ee:	89 53 18             	mov    %edx,0x18(%ebx)
56e0f1:	8b 44 05 b8          	mov    -0x48(%ebp,%eax,1),%eax
56e0f5:	89 43 1c             	mov    %eax,0x1c(%ebx)
56e0f8:	8b 43 08             	mov    0x8(%ebx),%eax
56e0fb:	8b 0b                	mov    (%ebx),%ecx
56e0fd:	3b c8                	cmp    %eax,%ecx
56e0ff:	7f 0a                	jg     0x56e10b
56e101:	8b 53 04             	mov    0x4(%ebx),%edx
56e104:	8b 4b 0c             	mov    0xc(%ebx),%ecx
56e107:	3b d1                	cmp    %ecx,%edx
56e109:	7e 17                	jle    0x56e122
56e10b:	68 10 02 00 00       	push   $0x210
56e110:	68 fc 0b 6a 00       	push   $0x6a0bfc
56e115:	68 c3 0b 6a 00       	push   $0x6a0bc3
56e11a:	e8 21 ca fe ff       	call   0x55ab40
56e11f:	83 c4 0c             	add    $0xc,%esp
56e122:	8b 03                	mov    (%ebx),%eax
56e124:	8b 53 08             	mov    0x8(%ebx),%edx
56e127:	3b c2                	cmp    %edx,%eax
56e129:	75 0e                	jne    0x56e139
56e12b:	8b 4b 04             	mov    0x4(%ebx),%ecx
56e12e:	89 4b 0c             	mov    %ecx,0xc(%ebx)
56e131:	8b 43 14             	mov    0x14(%ebx),%eax
56e134:	89 43 1c             	mov    %eax,0x1c(%ebx)
56e137:	eb 15                	jmp    0x56e14e
56e139:	8b 53 04             	mov    0x4(%ebx),%edx
56e13c:	8b 4b 0c             	mov    0xc(%ebx),%ecx
56e13f:	3b d1                	cmp    %ecx,%edx
56e141:	75 0b                	jne    0x56e14e
56e143:	8b 03                	mov    (%ebx),%eax
56e145:	89 43 08             	mov    %eax,0x8(%ebx)
56e148:	8b 53 10             	mov    0x10(%ebx),%edx
56e14b:	89 53 18             	mov    %edx,0x18(%ebx)
56e14e:	47                   	inc    %edi
56e14f:	83 c3 20             	add    $0x20,%ebx
56e152:	8b 4d ec             	mov    -0x14(%ebp),%ecx
56e155:	3b f9                	cmp    %ecx,%edi
56e157:	0f 8c 3f ff ff ff    	jl     0x56e09c
56e15d:	5f                   	pop    %edi
56e15e:	5e                   	pop    %esi
56e15f:	5b                   	pop    %ebx
56e160:	8b e5                	mov    %ebp,%esp
56e162:	5d                   	pop    %ebp
56e163:	c2 18 00             	ret    $0x18
56e166:	90                   	nop
56e167:	90                   	nop
56e168:	55                   	push   %ebp
56e169:	8b ec                	mov    %esp,%ebp
56e16b:	83 c4 dc             	add    $0xffffffdc,%esp
56e16e:	53                   	push   %ebx
56e16f:	56                   	push   %esi
56e170:	57                   	push   %edi
56e171:	89 4d f8             	mov    %ecx,-0x8(%ebp)
56e174:	89 55 fc             	mov    %edx,-0x4(%ebp)
56e177:	8b d8                	mov    %eax,%ebx
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