40708a:	03 d0                	add    %eax,%edx
40708c:	23 c7                	and    %edi,%eax
40708e:	03 f0                	add    %eax,%esi
407090:	83 e9 01             	sub    $0x1,%ecx
407093:	75 cf                	jne    0x407064
407095:	8b 45 f0             	mov    -0x10(%ebp),%eax
407098:	c1 e2 04             	shl    $0x4,%edx
40709b:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40709e:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070a1:	0f b7 80 46 06 00 00 	movzwl 0x646(%eax),%eax
4070a8:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4070ab:	0f b7 c8             	movzwl %ax,%ecx
4070ae:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4070b4:	73 12                	jae    0x4070c8
4070b6:	0f b6 03             	movzbl (%ebx),%eax
4070b9:	c1 e6 08             	shl    $0x8,%esi
4070bc:	0b f0                	or     %eax,%esi
4070be:	c1 e7 08             	shl    $0x8,%edi
4070c1:	43                   	inc    %ebx
4070c2:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070c5:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4070c8:	8b c7                	mov    %edi,%eax
4070ca:	c1 e8 0b             	shr    $0xb,%eax
4070cd:	0f af c1             	imul   %ecx,%eax
4070d0:	3b f0                	cmp    %eax,%esi
4070d2:	73 13                	jae    0x4070e7
4070d4:	8b f8                	mov    %eax,%edi
4070d6:	b8 00 08 00 00       	mov    $0x800,%eax
4070db:	2b c1                	sub    %ecx,%eax
4070dd:	c1 e8 05             	shr    $0x5,%eax
4070e0:	03 45 b4             	add    -0x4c(%ebp),%eax
4070e3:	6a 04                	push   $0x4
4070e5:	eb 14                	jmp    0x4070fb
4070e7:	2b f0                	sub    %eax,%esi
4070e9:	c1 e9 05             	shr    $0x5,%ecx
4070ec:	2b f8                	sub    %eax,%edi
4070ee:	89 75 f8             	mov    %esi,-0x8(%ebp)
4070f1:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4070f4:	83 ca 01             	or     $0x1,%edx
4070f7:	2b c1                	sub    %ecx,%eax
4070f9:	6a 06                	push   $0x6
4070fb:	8b 5d f0             	mov    -0x10(%ebp),%ebx
4070fe:	0f b7 c8             	movzwl %ax,%ecx
407101:	58                   	pop    %eax
407102:	89 45 cc             	mov    %eax,-0x34(%ebp)
407105:	66 89 8b 46 06 00 00 	mov    %cx,0x646(%ebx)
40710c:	8b cb                	mov    %ebx,%ecx
40710e:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407111:	81 c1 44 06 00 00    	add    $0x644,%ecx
407117:	03 c1                	add    %ecx,%eax
407119:	89 45 9c             	mov    %eax,-0x64(%ebp)
40711c:	0f b7 00             	movzwl (%eax),%eax
40711f:	89 45 b4             	mov    %eax,-0x4c(%ebp)
407122:	0f b7 c8             	movzwl %ax,%ecx
407125:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40712b:	73 12                	jae    0x40713f
40712d:	0f b6 03             	movzbl (%ebx),%eax
407130:	c1 e6 08             	shl    $0x8,%esi
407133:	0b f0                	or     %eax,%esi
407135:	c1 e7 08             	shl    $0x8,%edi
407138:	43                   	inc    %ebx
407139:	89 75 f8             	mov    %esi,-0x8(%ebp)
40713c:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40713f:	8b c7                	mov    %edi,%eax
407141:	c1 e8 0b             	shr    $0xb,%eax
407144:	0f af c1             	imul   %ecx,%eax
407147:	3b f0                	cmp    %eax,%esi
407149:	73 11                	jae    0x40715c
40714b:	8b f8                	mov    %eax,%edi
40714d:	b8 00 08 00 00       	mov    $0x800,%eax
407152:	2b c1                	sub    %ecx,%eax
407154:	c1 e8 05             	shr    $0x5,%eax
407157:	03 45 b4             	add    -0x4c(%ebp),%eax
40715a:	eb 15                	jmp    0x407171
40715c:	2b f0                	sub    %eax,%esi
40715e:	c1 e9 05             	shr    $0x5,%ecx
407161:	2b f8                	sub    %eax,%edi
407163:	89 75 f8             	mov    %esi,-0x8(%ebp)
407166:	8b 45 b4             	mov    -0x4c(%ebp),%eax
407169:	83 ca 02             	or     $0x2,%edx
40716c:	ff 45 cc             	incl   -0x34(%ebp)
40716f:	2b c1                	sub    %ecx,%eax
407171:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
407174:	0f b7 c0             	movzwl %ax,%eax
407177:	66 89 01             	mov    %ax,(%ecx)
40717a:	8b 45 cc             	mov    -0x34(%ebp),%eax
40717d:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407180:	03 c0                	add    %eax,%eax
407182:	81 c1 44 06 00 00    	add    $0x644,%ecx
407188:	89 45 cc             	mov    %eax,-0x34(%ebp)
40718b:	03 c1                	add    %ecx,%eax
40718d:	89 45 9c             	mov    %eax,-0x64(%ebp)
407190:	0f b7 00             	movzwl (%eax),%eax
407193:	89 45 b4             	mov    %eax,-0x4c(%ebp)
407196:	0f b7 c8             	movzwl %ax,%ecx
407199:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40719f:	73 12                	jae    0x4071b3
4071a1:	0f b6 03             	movzbl (%ebx),%eax
4071a4:	c1 e6 08             	shl    $0x8,%esi
4071a7:	0b f0                	or     %eax,%esi
4071a9:	c1 e7 08             	shl    $0x8,%edi
4071ac:	43                   	inc    %ebx
4071ad:	89 75 f8             	mov    %esi,-0x8(%ebp)
4071b0:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4071b3:	8b c7                	mov    %edi,%eax
4071b5:	c1 e8 0b             	shr    $0xb,%eax
4071b8:	0f af c1             	imul   %ecx,%eax
4071bb:	3b f0                	cmp    %eax,%esi
4071bd:	73 11                	jae    0x4071d0
4071bf:	8b f8                	mov    %eax,%edi
4071c1:	b8 00 08 00 00       	mov    $0x800,%eax
4071c6:	2b c1                	sub    %ecx,%eax
4071c8:	c1 e8 05             	shr    $0x5,%eax
4071cb:	03 45 b4             	add    -0x4c(%ebp),%eax
4071ce:	eb 15                	jmp    0x4071e5
4071d0:	2b f0                	sub    %eax,%esi
4071d2:	c1 e9 05             	shr    $0x5,%ecx
4071d5:	2b f8                	sub    %eax,%edi
4071d7:	89 75 f8             	mov    %esi,-0x8(%ebp)
4071da:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4071dd:	83 ca 04             	or     $0x4,%edx
4071e0:	ff 45 cc             	incl   -0x34(%ebp)
4071e3:	2b c1                	sub    %ecx,%eax
4071e5:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
4071e8:	0f b7 c0             	movzwl %ax,%eax
4071eb:	66 89 01             	mov    %ax,(%ecx)
4071ee:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4071f1:	8b 45 cc             	mov    -0x34(%ebp),%eax
4071f4:	0f b7 84 41 44 06 00 	movzwl 0x644(%ecx,%eax,2),%eax
4071fb:	00
4071fc:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4071ff:	0f b7 c8             	movzwl %ax,%ecx
407202:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407208:	73 12                	jae    0x40721c
40720a:	0f b6 03             	movzbl (%ebx),%eax
40720d:	c1 e6 08             	shl    $0x8,%esi
407210:	0b f0                	or     %eax,%esi
407212:	c1 e7 08             	shl    $0x8,%edi
407215:	43                   	inc    %ebx
407216:	89 75 f8             	mov    %esi,-0x8(%ebp)
407219:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40721c:	8b c7                	mov    %edi,%eax
40721e:	c1 e8 0b             	shr    $0xb,%eax
407221:	0f af c1             	imul   %ecx,%eax
407224:	3b f0                	cmp    %eax,%esi
407226:	73 11                	jae    0x407239
407228:	8b f8                	mov    %eax,%edi
40722a:	b8 00 08 00 00       	mov    $0x800,%eax
40722f:	2b c1                	sub    %ecx,%eax
407231:	c1 e8 05             	shr    $0x5,%eax
407234:	03 45 b4             	add    -0x4c(%ebp),%eax
407237:	eb 12                	jmp    0x40724b
407239:	2b f0                	sub    %eax,%esi
40723b:	c1 e9 05             	shr    $0x5,%ecx
40723e:	2b f8                	sub    %eax,%edi
407240:	89 75 f8             	mov    %esi,-0x8(%ebp)
407243:	8b 45 b4             	mov    -0x4c(%ebp),%eax
407246:	83 ca 08             	or     $0x8,%edx
407249:	2b c1                	sub    %ecx,%eax
40724b:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40724e:	8b 4d cc             	mov    -0x34(%ebp),%ecx
407251:	0f b7 c0             	movzwl %ax,%eax
407254:	66 89 84 4b 44 06 00 	mov    %ax,0x644(%ebx,%ecx,2)
40725b:	00
40725c:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40725f:	83 fa ff             	cmp    $0xffffffff,%edx
407262:	0f 84 2f 01 00 00    	je     0x407397
407268:	8b 45 d0             	mov    -0x30(%ebp),%eax
40726b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40726e:	89 45 c4             	mov    %eax,-0x3c(%ebp)
407271:	8b 45 dc             	mov    -0x24(%ebp),%eax
407274:	89 45 d4             	mov    %eax,-0x2c(%ebp)
407277:	8d 42 01             	lea    0x1(%edx),%eax
40727a:	89 45 dc             	mov    %eax,-0x24(%ebp)
40727d:	8b 45 b8             	mov    -0x48(%ebp),%eax
407280:	89 4d d0             	mov    %ecx,-0x30(%ebp)
407283:	85 c0                	test   %eax,%eax
407285:	75 05                	jne    0x40728c
407287:	3b 55 e0             	cmp    -0x20(%ebp),%edx
40728a:	eb 02                	jmp    0x40728e
40728c:	3b d0                	cmp    %eax,%edx
40728e:	0f 83 14 01 00 00    	jae    0x4073a8
407294:	83 7d ec 13          	cmpl   $0x13,-0x14(%ebp)
407298:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40729b:	1b c0                	sbb    %eax,%eax
40729d:	83 e0 fd             	and    $0xfffffffd,%eax
4072a0:	83 c0 0a             	add    $0xa,%eax
4072a3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4072a6:	8b 55 e8             	mov    -0x18(%ebp),%edx
4072a9:	83 c1 02             	add    $0x2,%ecx
4072ac:	8b 45 b0             	mov    -0x50(%ebp),%eax
4072af:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4072b2:	3b c2                	cmp    %edx,%eax
4072b4:	0f 84 ee 00 00 00    	je     0x4073a8
4072ba:	8b c8                	mov    %eax,%ecx
4072bc:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4072bf:	2b ca                	sub    %edx,%ecx
4072c1:	3b c8                	cmp    %eax,%ecx
4072c3:	72 02                	jb     0x4072c7
4072c5:	8b c8                	mov    %eax,%ecx
4072c7:	3b 55 dc             	cmp    -0x24(%ebp),%edx
4072ca:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4072cd:	1b c0                	sbb    %eax,%eax
4072cf:	01 4d e0             	add    %ecx,-0x20(%ebp)
4072d2:	23 45 d8             	and    -0x28(%ebp),%eax
4072d5:	2b 45 dc             	sub    -0x24(%ebp),%eax
4072d8:	29 4d e4             	sub    %ecx,-0x1c(%ebp)
4072db:	03 d0                	add    %eax,%edx
4072dd:	89 45 9c             	mov    %eax,-0x64(%ebp)
4072e0:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4072e3:	3b 45 d8             	cmp    -0x28(%ebp),%eax
4072e6:	77 21                	ja     0x407309
4072e8:	8b 55 c8             	mov    -0x38(%ebp),%edx
4072eb:	03 d3                	add    %ebx,%edx
4072ed:	03 d9                	add    %ecx,%ebx
4072ef:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4072f2:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4072f5:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
4072f8:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4072fb:	8b d8                	mov    %eax,%ebx
4072fd:	8a 04 11             	mov    (%ecx,%edx,1),%al
407300:	88 02                	mov    %al,(%edx)
407302:	42                   	inc    %edx
407303:	3b d3                	cmp    %ebx,%edx
407305:	75 f6                	jne    0x4072fd
407307:	eb 23                	jmp    0x40732c
407309:	8b 75 c8             	mov    -0x38(%ebp),%esi
40730c:	8a 04 32             	mov    (%edx,%esi,1),%al
40730f:	88 04 33             	mov    %al,(%ebx,%esi,1)
407312:	8d 42 01             	lea    0x1(%edx),%eax
407315:	8b d0                	mov    %eax,%edx
407317:	43                   	inc    %ebx
407318:	2b 55 d8             	sub    -0x28(%ebp),%edx
40731b:	f7 da                	neg    %edx
40731d:	1b d2                	sbb    %edx,%edx
40731f:	23 d0                	and    %eax,%edx
407321:	83 e9 01             	sub    $0x1,%ecx
407324:	75 e6                	jne    0x40730c
407326:	8b 75 f8             	mov    -0x8(%ebp),%esi
407329:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40732c:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40732f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407332:	8b 45 e0             	mov    -0x20(%ebp),%eax
407335:	8b 55 ec             	mov    -0x14(%ebp),%edx
407338:	3b 4d b0             	cmp    -0x50(%ebp),%ecx
40733b:	73 09                	jae    0x407346
40733d:	3b 5d 08             	cmp    0x8(%ebp),%ebx
407340:	0f 82 d5 f3 ff ff    	jb     0x40671b
407346:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
407349:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40734f:	73 0c                	jae    0x40735d
407351:	0f b6 03             	movzbl (%ebx),%eax
407354:	c1 e6 08             	shl    $0x8,%esi
407357:	c1 e7 08             	shl    $0x8,%edi
40735a:	0b f0                	or     %eax,%esi
40735c:	43                   	inc    %ebx
40735d:	8b 45 ac             	mov    -0x54(%ebp),%eax
407360:	89 48 48             	mov    %ecx,0x48(%eax)
407363:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407366:	89 48 24             	mov    %ecx,0x24(%eax)
407369:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40736c:	89 58 18             	mov    %ebx,0x18(%eax)
40736f:	8b 5d d0             	mov    -0x30(%ebp),%ebx
407372:	89 48 2c             	mov    %ecx,0x2c(%eax)
407375:	8b 4d dc             	mov    -0x24(%ebp),%ecx
407378:	89 48 38             	mov    %ecx,0x38(%eax)
40737b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40737e:	89 58 40             	mov    %ebx,0x40(%eax)
407381:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
407384:	89 78 1c             	mov    %edi,0x1c(%eax)
407387:	89 70 20             	mov    %esi,0x20(%eax)
40738a:	89 48 3c             	mov    %ecx,0x3c(%eax)
40738d:	89 58 44             	mov    %ebx,0x44(%eax)
407390:	89 50 34             	mov    %edx,0x34(%eax)
407393:	33 c0                	xor    %eax,%eax
407395:	eb 14                	jmp    0x4073ab
407397:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40739a:	8b 55 ec             	mov    -0x14(%ebp),%edx
40739d:	81 c1 12 01 00 00    	add    $0x112,%ecx
4073a3:	83 ea 0c             	sub    $0xc,%edx
4073a6:	eb a1                	jmp    0x407349
4073a8:	33 c0                	xor    %eax,%eax
4073aa:	40                   	inc    %eax
4073ab:	5f                   	pop    %edi
4073ac:	5e                   	pop    %esi
4073ad:	5b                   	pop    %ebx
4073ae:	c9                   	leave
4073af:	c2 04 00             	ret    $0x4
4073b2:	55                   	push   %ebp
4073b3:	8b ec                	mov    %esp,%ebp
4073b5:	83 ec 0c             	sub    $0xc,%esp
4073b8:	8b c2                	mov    %edx,%eax
4073ba:	57                   	push   %edi
4073bb:	8b 79 48             	mov    0x48(%ecx),%edi
4073be:	85 ff                	test   %edi,%edi
4073c0:	74 6f                	je     0x407431
4073c2:	81 ff 12 01 00 00    	cmp    $0x112,%edi
4073c8:	73 67                	jae    0x407431
4073ca:	8b 51 24             	mov    0x24(%ecx),%edx
4073cd:	2b c2                	sub    %edx,%eax
4073cf:	53                   	push   %ebx
4073d0:	8b 59 14             	mov    0x14(%ecx),%ebx
4073d3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4073d6:	8b 59 28             	mov    0x28(%ecx),%ebx
4073d9:	56                   	push   %esi
4073da:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4073dd:	8b f7                	mov    %edi,%esi
4073df:	8b 59 38             	mov    0x38(%ecx),%ebx
4073e2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4073e5:	8b 5d fc             	mov    -0x4(%ebp),%ebx
4073e8:	3b c6                	cmp    %esi,%eax
4073ea:	73 02                	jae    0x4073ee
4073ec:	8b f0                	mov    %eax,%esi
4073ee:	83 79 30 00          	cmpl   $0x0,0x30(%ecx)
4073f2:	75 12                	jne    0x407406
4073f4:	8b 59 0c             	mov    0xc(%ecx),%ebx
4073f7:	8b c3                	mov    %ebx,%eax
4073f9:	2b 41 2c             	sub    0x2c(%ecx),%eax
4073fc:	3b c6                	cmp    %esi,%eax
4073fe:	77 03                	ja     0x407403
407400:	89 59 30             	mov    %ebx,0x30(%ecx)
407403:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407406:	01 71 2c             	add    %esi,0x2c(%ecx)
407409:	2b fe                	sub    %esi,%edi
40740b:	89 79 48             	mov    %edi,0x48(%ecx)
40740e:	85 f6                	test   %esi,%esi
407410:	74 1a                	je     0x40742c
407412:	8b 7d f8             	mov    -0x8(%ebp),%edi
407415:	3b d7                	cmp    %edi,%edx
407417:	1b c0                	sbb    %eax,%eax
407419:	23 45 f4             	and    -0xc(%ebp),%eax
40741c:	2b c7                	sub    %edi,%eax
40741e:	03 c2                	add    %edx,%eax
407420:	8a 04 18             	mov    (%eax,%ebx,1),%al
407423:	88 04 1a             	mov    %al,(%edx,%ebx,1)
407426:	42                   	inc    %edx
407427:	83 ee 01             	sub    $0x1,%esi
40742a:	75 e9                	jne    0x407415
40742c:	5e                   	pop    %esi
40742d:	89 51 24             	mov    %edx,0x24(%ecx)
407430:	5b                   	pop    %ebx
407431:	5f                   	pop    %edi
407432:	c9                   	leave
407433:	c3                   	ret
407434:	55                   	push   %ebp
407435:	8b ec                	mov    %esp,%ebp
407437:	53                   	push   %ebx
407438:	8b 5d 08             	mov    0x8(%ebp),%ebx
40743b:	56                   	push   %esi
40743c:	57                   	push   %edi