40212d:	66 85 f6             	test   %si,%si
402130:	74 05                	je     0x402137
402132:	66 3b f0             	cmp    %ax,%si
402135:	74 c8                	je     0x4020ff
402137:	0f b7 c8             	movzwl %ax,%ecx
40213a:	0f b7 c6             	movzwl %si,%eax
40213d:	2b c1                	sub    %ecx,%eax
40213f:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
402143:	5e                   	pop    %esi
402144:	74 07                	je     0x40214d
402146:	8b 4d f8             	mov    -0x8(%ebp),%ecx
402149:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40214d:	5f                   	pop    %edi
40214e:	5b                   	pop    %ebx
40214f:	c9                   	leave
402150:	c3                   	ret
402151:	8b ff                	mov    %edi,%edi
402153:	55                   	push   %ebp
402154:	8b ec                	mov    %esp,%ebp
402156:	83 3d 54 32 41 00 00 	cmpl   $0x0,0x413254
40215d:	56                   	push   %esi
40215e:	75 79                	jne    0x4021d9
402160:	33 c0                	xor    %eax,%eax
402162:	39 45 10             	cmp    %eax,0x10(%ebp)
402165:	0f 84 81 00 00 00    	je     0x4021ec
40216b:	8b 75 08             	mov    0x8(%ebp),%esi
40216e:	85 f6                	test   %esi,%esi
402170:	75 17                	jne    0x402189
402172:	e8 b0 1f 00 00       	call   0x404127
402177:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40217d:	e8 05 0b 00 00       	call   0x402c87
402182:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
402187:	eb 63                	jmp    0x4021ec
402189:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40218c:	85 c9                	test   %ecx,%ecx
40218e:	74 e2                	je     0x402172
402190:	2b f1                	sub    %ecx,%esi
402192:	0f b7 04 0e          	movzwl (%esi,%ecx,1),%eax
402196:	83 f8 41             	cmp    $0x41,%eax
402199:	72 0d                	jb     0x4021a8
40219b:	83 f8 5a             	cmp    $0x5a,%eax
40219e:	77 08                	ja     0x4021a8
4021a0:	83 c0 20             	add    $0x20,%eax
4021a3:	0f b7 d0             	movzwl %ax,%edx
4021a6:	eb 02                	jmp    0x4021aa
4021a8:	8b d0                	mov    %eax,%edx
4021aa:	0f b7 01             	movzwl (%ecx),%eax
4021ad:	83 f8 41             	cmp    $0x41,%eax
4021b0:	72 0b                	jb     0x4021bd
4021b2:	83 f8 5a             	cmp    $0x5a,%eax
4021b5:	77 06                	ja     0x4021bd
4021b7:	83 c0 20             	add    $0x20,%eax
4021ba:	0f b7 c0             	movzwl %ax,%eax
4021bd:	83 c1 02             	add    $0x2,%ecx
4021c0:	ff 4d 10             	decl   0x10(%ebp)
4021c3:	74 0a                	je     0x4021cf
4021c5:	66 85 d2             	test   %dx,%dx
4021c8:	74 05                	je     0x4021cf
4021ca:	66 3b d0             	cmp    %ax,%dx
4021cd:	74 c3                	je     0x402192
4021cf:	0f b7 c8             	movzwl %ax,%ecx
4021d2:	0f b7 c2             	movzwl %dx,%eax
4021d5:	2b c1                	sub    %ecx,%eax
4021d7:	eb 13                	jmp    0x4021ec
4021d9:	6a 00                	push   $0x0
4021db:	ff 75 10             	push   0x10(%ebp)
4021de:	ff 75 0c             	push   0xc(%ebp)
4021e1:	ff 75 08             	push   0x8(%ebp)
4021e4:	e8 83 fe ff ff       	call   0x40206c
4021e9:	83 c4 10             	add    $0x10,%esp
4021ec:	5e                   	pop    %esi
4021ed:	5d                   	pop    %ebp
4021ee:	c3                   	ret
4021ef:	8b ff                	mov    %edi,%edi
4021f1:	55                   	push   %ebp
4021f2:	8b ec                	mov    %esp,%ebp
4021f4:	53                   	push   %ebx
4021f5:	8b 5d 08             	mov    0x8(%ebp),%ebx
4021f8:	83 fb e0             	cmp    $0xffffffe0,%ebx
4021fb:	77 6f                	ja     0x40226c
4021fd:	56                   	push   %esi
4021fe:	57                   	push   %edi
4021ff:	83 3d 24 32 41 00 00 	cmpl   $0x0,0x413224
402206:	75 18                	jne    0x402220
402208:	e8 fd 43 00 00       	call   0x40660a
40220d:	6a 1e                	push   $0x1e
40220f:	e8 47 42 00 00       	call   0x40645b
402214:	68 ff 00 00 00       	push   $0xff
402219:	e8 57 3f 00 00       	call   0x406175
40221e:	59                   	pop    %ecx
40221f:	59                   	pop    %ecx
402220:	85 db                	test   %ebx,%ebx
402222:	74 04                	je     0x402228
402224:	8b c3                	mov    %ebx,%eax
402226:	eb 03                	jmp    0x40222b
402228:	33 c0                	xor    %eax,%eax
40222a:	40                   	inc    %eax
40222b:	50                   	push   %eax
40222c:	6a 00                	push   $0x0
40222e:	ff 35 24 32 41 00    	push   0x413224
402234:	ff 15 70 f0 40 00    	call   *0x40f070
40223a:	8b f8                	mov    %eax,%edi
40223c:	85 ff                	test   %edi,%edi
40223e:	75 26                	jne    0x402266
402240:	6a 0c                	push   $0xc
402242:	5e                   	pop    %esi
402243:	39 05 bc 38 41 00    	cmp    %eax,0x4138bc
402249:	74 0d                	je     0x402258
40224b:	53                   	push   %ebx
40224c:	e8 01 44 00 00       	call   0x406652
402251:	59                   	pop    %ecx
402252:	85 c0                	test   %eax,%eax
402254:	75 a9                	jne    0x4021ff
402256:	eb 07                	jmp    0x40225f
402258:	e8 ca 1e 00 00       	call   0x404127
40225d:	89 30                	mov    %esi,(%eax)
40225f:	e8 c3 1e 00 00       	call   0x404127
402264:	89 30                	mov    %esi,(%eax)
402266:	8b c7                	mov    %edi,%eax
402268:	5f                   	pop    %edi
402269:	5e                   	pop    %esi
40226a:	eb 14                	jmp    0x402280
40226c:	53                   	push   %ebx
40226d:	e8 e0 43 00 00       	call   0x406652
402272:	59                   	pop    %ecx
402273:	e8 af 1e 00 00       	call   0x404127
402278:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40227e:	33 c0                	xor    %eax,%eax
402280:	5b                   	pop    %ebx
402281:	5d                   	pop    %ebp
402282:	c3                   	ret
402283:	b8 00 20 41 00       	mov    $0x412000,%eax
402288:	c3                   	ret
402289:	a1 60 57 41 00       	mov    0x415760,%eax
40228e:	56                   	push   %esi
40228f:	6a 14                	push   $0x14
402291:	5e                   	pop    %esi
402292:	85 c0                	test   %eax,%eax
402294:	75 07                	jne    0x40229d
402296:	b8 00 02 00 00       	mov    $0x200,%eax
40229b:	eb 06                	jmp    0x4022a3
40229d:	3b c6                	cmp    %esi,%eax
40229f:	7d 07                	jge    0x4022a8
4022a1:	8b c6                	mov    %esi,%eax
4022a3:	a3 60 57 41 00       	mov    %eax,0x415760
4022a8:	6a 04                	push   $0x4
4022aa:	50                   	push   %eax
4022ab:	e8 54 46 00 00       	call   0x406904
4022b0:	59                   	pop    %ecx
4022b1:	59                   	pop    %ecx
4022b2:	a3 44 47 41 00       	mov    %eax,0x414744
4022b7:	85 c0                	test   %eax,%eax
4022b9:	75 1e                	jne    0x4022d9
4022bb:	6a 04                	push   $0x4
4022bd:	56                   	push   %esi
4022be:	89 35 60 57 41 00    	mov    %esi,0x415760
4022c4:	e8 3b 46 00 00       	call   0x406904
4022c9:	59                   	pop    %ecx
4022ca:	59                   	pop    %ecx
4022cb:	a3 44 47 41 00       	mov    %eax,0x414744
4022d0:	85 c0                	test   %eax,%eax
4022d2:	75 05                	jne    0x4022d9
4022d4:	6a 1a                	push   $0x1a
4022d6:	58                   	pop    %eax
4022d7:	5e                   	pop    %esi
4022d8:	c3                   	ret
4022d9:	33 d2                	xor    %edx,%edx
4022db:	b9 00 20 41 00       	mov    $0x412000,%ecx
4022e0:	eb 05                	jmp    0x4022e7
4022e2:	a1 44 47 41 00       	mov    0x414744,%eax
4022e7:	89 0c 02             	mov    %ecx,(%edx,%eax,1)
4022ea:	83 c1 20             	add    $0x20,%ecx
4022ed:	83 c2 04             	add    $0x4,%edx
4022f0:	81 f9 80 22 41 00    	cmp    $0x412280,%ecx
4022f6:	7c ea                	jl     0x4022e2
4022f8:	6a fe                	push   $0xfffffffe
4022fa:	5e                   	pop    %esi
4022fb:	33 d2                	xor    %edx,%edx
4022fd:	b9 10 20 41 00       	mov    $0x412010,%ecx
402302:	57                   	push   %edi
402303:	8b c2                	mov    %edx,%eax
402305:	c1 f8 05             	sar    $0x5,%eax
402308:	8b 04 85 20 46 41 00 	mov    0x414620(,%eax,4),%eax
40230f:	8b fa                	mov    %edx,%edi
402311:	83 e7 1f             	and    $0x1f,%edi
402314:	c1 e7 06             	shl    $0x6,%edi
402317:	8b 04 07             	mov    (%edi,%eax,1),%eax
40231a:	83 f8 ff             	cmp    $0xffffffff,%eax
40231d:	74 08                	je     0x402327
40231f:	3b c6                	cmp    %esi,%eax
402321:	74 04                	je     0x402327
402323:	85 c0                	test   %eax,%eax
402325:	75 02                	jne    0x402329
402327:	89 31                	mov    %esi,(%ecx)
402329:	83 c1 20             	add    $0x20,%ecx
40232c:	42                   	inc    %edx
40232d:	81 f9 70 20 41 00    	cmp    $0x412070,%ecx
402333:	7c ce                	jl     0x402303
402335:	5f                   	pop    %edi
402336:	33 c0                	xor    %eax,%eax
402338:	5e                   	pop    %esi
402339:	c3                   	ret
40233a:	e8 d7 48 00 00       	call   0x406c16
40233f:	80 3d 80 32 41 00 00 	cmpb   $0x0,0x413280
402346:	74 05                	je     0x40234d
402348:	e8 a3 46 00 00       	call   0x4069f0
40234d:	ff 35 44 47 41 00    	push   0x414744
402353:	e8 13 fc ff ff       	call   0x401f6b
402358:	59                   	pop    %ecx
402359:	c3                   	ret
40235a:	8b ff                	mov    %edi,%edi
40235c:	55                   	push   %ebp
40235d:	8b ec                	mov    %esp,%ebp
40235f:	56                   	push   %esi
402360:	8b 75 08             	mov    0x8(%ebp),%esi
402363:	b8 00 20 41 00       	mov    $0x412000,%eax
402368:	3b f0                	cmp    %eax,%esi
40236a:	72 22                	jb     0x40238e
40236c:	81 fe 60 22 41 00    	cmp    $0x412260,%esi
402372:	77 1a                	ja     0x40238e
402374:	8b ce                	mov    %esi,%ecx
402376:	2b c8                	sub    %eax,%ecx
402378:	c1 f9 05             	sar    $0x5,%ecx
40237b:	83 c1 10             	add    $0x10,%ecx
40237e:	51                   	push   %ecx
40237f:	e8 15 4a 00 00       	call   0x406d99
402384:	81 4e 0c 00 80 00 00 	orl    $0x8000,0xc(%esi)
40238b:	59                   	pop    %ecx
40238c:	eb 0a                	jmp    0x402398
40238e:	83 c6 20             	add    $0x20,%esi
402391:	56                   	push   %esi
402392:	ff 15 74 f0 40 00    	call   *0x40f074
402398:	5e                   	pop    %esi
402399:	5d                   	pop    %ebp
40239a:	c3                   	ret
40239b:	8b ff                	mov    %edi,%edi
40239d:	55                   	push   %ebp
40239e:	8b ec                	mov    %esp,%ebp
4023a0:	8b 45 08             	mov    0x8(%ebp),%eax
4023a3:	83 f8 14             	cmp    $0x14,%eax
4023a6:	7d 16                	jge    0x4023be
4023a8:	83 c0 10             	add    $0x10,%eax
4023ab:	50                   	push   %eax
4023ac:	e8 e8 49 00 00       	call   0x406d99
4023b1:	8b 45 0c             	mov    0xc(%ebp),%eax
4023b4:	81 48 0c 00 80 00 00 	orl    $0x8000,0xc(%eax)
4023bb:	59                   	pop    %ecx
4023bc:	5d                   	pop    %ebp
4023bd:	c3                   	ret
4023be:	8b 45 0c             	mov    0xc(%ebp),%eax
4023c1:	83 c0 20             	add    $0x20,%eax
4023c4:	50                   	push   %eax
4023c5:	ff 15 74 f0 40 00    	call   *0x40f074
4023cb:	5d                   	pop    %ebp
4023cc:	c3                   	ret
4023cd:	8b ff                	mov    %edi,%edi
4023cf:	55                   	push   %ebp
4023d0:	8b ec                	mov    %esp,%ebp
4023d2:	8b 45 08             	mov    0x8(%ebp),%eax
4023d5:	b9 00 20 41 00       	mov    $0x412000,%ecx
4023da:	3b c1                	cmp    %ecx,%eax
4023dc:	72 1f                	jb     0x4023fd
4023de:	3d 60 22 41 00       	cmp    $0x412260,%eax
4023e3:	77 18                	ja     0x4023fd
4023e5:	81 60 0c ff 7f ff ff 	andl   $0xffff7fff,0xc(%eax)
4023ec:	2b c1                	sub    %ecx,%eax
4023ee:	c1 f8 05             	sar    $0x5,%eax
4023f1:	83 c0 10             	add    $0x10,%eax
4023f4:	50                   	push   %eax
4023f5:	e8 c6 48 00 00       	call   0x406cc0
4023fa:	59                   	pop    %ecx
4023fb:	5d                   	pop    %ebp
4023fc:	c3                   	ret
4023fd:	83 c0 20             	add    $0x20,%eax
402400:	50                   	push   %eax
402401:	ff 15 78 f0 40 00    	call   *0x40f078
402407:	5d                   	pop    %ebp
402408:	c3                   	ret
402409:	8b ff                	mov    %edi,%edi
40240b:	55                   	push   %ebp
40240c:	8b ec                	mov    %esp,%ebp
40240e:	8b 4d 08             	mov    0x8(%ebp),%ecx
402411:	8b 45 0c             	mov    0xc(%ebp),%eax
402414:	83 f9 14             	cmp    $0x14,%ecx
402417:	7d 13                	jge    0x40242c
402419:	81 60 0c ff 7f ff ff 	andl   $0xffff7fff,0xc(%eax)
402420:	83 c1 10             	add    $0x10,%ecx
402423:	51                   	push   %ecx
402424:	e8 97 48 00 00       	call   0x406cc0
402429:	59                   	pop    %ecx
40242a:	5d                   	pop    %ebp
40242b:	c3                   	ret
40242c:	83 c0 20             	add    $0x20,%eax
40242f:	50                   	push   %eax
402430:	ff 15 78 f0 40 00    	call   *0x40f078
402436:	5d                   	pop    %ebp
402437:	c3                   	ret
402438:	cc                   	int3
402439:	cc                   	int3
40243a:	cc                   	int3
40243b:	cc                   	int3
40243c:	cc                   	int3
40243d:	cc                   	int3
40243e:	cc                   	int3
40243f:	cc                   	int3
402440:	8b 44 24 0c          	mov    0xc(%esp),%eax
402444:	53                   	push   %ebx
402445:	85 c0                	test   %eax,%eax
402447:	74 52                	je     0x40249b
402449:	8b 54 24 08          	mov    0x8(%esp),%edx
40244d:	33 db                	xor    %ebx,%ebx
40244f:	8a 5c 24 0c          	mov    0xc(%esp),%bl
402453:	f7 c2 03 00 00 00    	test   $0x3,%edx
402459:	74 16                	je     0x402471
40245b:	8a 0a                	mov    (%edx),%cl
40245d:	83 c2 01             	add    $0x1,%edx
402460:	32 cb                	xor    %bl,%cl
402462:	74 72                	je     0x4024d6
402464:	83 e8 01             	sub    $0x1,%eax
402467:	74 32                	je     0x40249b
402469:	f7 c2 03 00 00 00    	test   $0x3,%edx
40246f:	75 ea                	jne    0x40245b
402471:	83 e8 04             	sub    $0x4,%eax
402474:	72 12                	jb     0x402488
402476:	57                   	push   %edi
402477:	8b fb                	mov    %ebx,%edi
402479:	c1 e3 08             	shl    $0x8,%ebx
40247c:	03 df                	add    %edi,%ebx
40247e:	8b fb                	mov    %ebx,%edi
402480:	c1 e3 10             	shl    $0x10,%ebx
402483:	03 df                	add    %edi,%ebx
402485:	eb 1b                	jmp    0x4024a2
402487:	5f                   	pop    %edi
402488:	83 c0 04             	add    $0x4,%eax
40248b:	74 0e                	je     0x40249b
40248d:	8a 0a                	mov    (%edx),%cl
40248f:	83 c2 01             	add    $0x1,%edx
402492:	32 cb                	xor    %bl,%cl
402494:	74 40                	je     0x4024d6
402496:	83 e8 01             	sub    $0x1,%eax
402499:	75 f2                	jne    0x40248d
40249b:	5b                   	pop    %ebx
40249c:	c3                   	ret
40249d:	83 e8 04             	sub    $0x4,%eax
4024a0:	72 e5                	jb     0x402487
4024a2:	8b 0a                	mov    (%edx),%ecx
4024a4:	33 cb                	xor    %ebx,%ecx
4024a6:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
4024ab:	03 f9                	add    %ecx,%edi
4024ad:	83 f1 ff             	xor    $0xffffffff,%ecx