401f83:	33 db                	xor    %ebx,%ebx
401f85:	8b c5                	mov    %ebp,%eax
401f87:	e8 68 fe ff ff       	call   0x401df4
401f8c:	89 44 24 08          	mov    %eax,0x8(%esp)
401f90:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
401f95:	0f 84 8f 00 00 00    	je     0x40202a
401f9b:	8b 44 24 08          	mov    0x8(%esp),%eax
401f9f:	8b 78 08             	mov    0x8(%eax),%edi
401fa2:	8b c7                	mov    %edi,%eax
401fa4:	8b 54 24 08          	mov    0x8(%esp),%edx
401fa8:	03 42 0c             	add    0xc(%edx),%eax
401fab:	8b d0                	mov    %eax,%edx
401fad:	8d 0c 2e             	lea    (%esi,%ebp,1),%ecx
401fb0:	2b d1                	sub    %ecx,%edx
401fb2:	83 fa 0c             	cmp    $0xc,%edx
401fb5:	7f 04                	jg     0x401fbb
401fb7:	8b f0                	mov    %eax,%esi
401fb9:	2b f5                	sub    %ebp,%esi
401fbb:	8b c5                	mov    %ebp,%eax
401fbd:	2b c7                	sub    %edi,%eax
401fbf:	83 f8 0c             	cmp    $0xc,%eax
401fc2:	7d 16                	jge    0x401fda
401fc4:	8b 44 24 08          	mov    0x8(%esp),%eax
401fc8:	8b d5                	mov    %ebp,%edx
401fca:	2b 50 08             	sub    0x8(%eax),%edx
401fcd:	03 d6                	add    %esi,%edx
401fcf:	8b cc                	mov    %esp,%ecx
401fd1:	8b c7                	mov    %edi,%eax
401fd3:	e8 1c fb ff ff       	call   0x401af4
401fd8:	eb 0f                	jmp    0x401fe9
401fda:	8b cc                	mov    %esp,%ecx
401fdc:	8b d6                	mov    %esi,%edx
401fde:	83 ea 04             	sub    $0x4,%edx
401fe1:	8d 45 04             	lea    0x4(%ebp),%eax
401fe4:	e8 0b fb ff ff       	call   0x401af4
401fe9:	8b 3c 24             	mov    (%esp),%edi
401fec:	85 ff                	test   %edi,%edi
401fee:	74 3a                	je     0x40202a
401ff0:	8b d7                	mov    %edi,%edx
401ff2:	2b d5                	sub    %ebp,%edx
401ff4:	8b c5                	mov    %ebp,%eax
401ff6:	e8 3d fe ff ff       	call   0x401e38
401ffb:	8b 54 24 08          	mov    0x8(%esp),%edx
401fff:	8b 52 08             	mov    0x8(%edx),%edx
402002:	8b 4c 24 08          	mov    0x8(%esp),%ecx
402006:	03 51 0c             	add    0xc(%ecx),%edx
402009:	8b c7                	mov    %edi,%eax
40200b:	03 44 24 04          	add    0x4(%esp),%eax
40200f:	3b d0                	cmp    %eax,%edx
402011:	76 0a                	jbe    0x40201d
402013:	8d 14 2e             	lea    (%esi,%ebp,1),%edx
402016:	2b d0                	sub    %eax,%edx
402018:	e8 7b fe ff ff       	call   0x401e98
40201d:	8b d4                	mov    %esp,%edx
40201f:	8b 44 24 08          	mov    0x8(%esp),%eax
402023:	e8 fc f4 ff ff       	call   0x401524
402028:	b3 01                	mov    $0x1,%bl
40202a:	8b c3                	mov    %ebx,%eax
40202c:	83 c4 0c             	add    $0xc,%esp
40202f:	5d                   	pop    %ebp
402030:	5f                   	pop    %edi
402031:	5e                   	pop    %esi
402032:	5b                   	pop    %ebx
402033:	c3                   	ret
402034:	53                   	push   %ebx
402035:	56                   	push   %esi
402036:	83 c4 f4             	add    $0xfffffff4,%esp
402039:	8b da                	mov    %edx,%ebx
40203b:	8b f0                	mov    %eax,%esi
40203d:	89 34 24             	mov    %esi,(%esp)
402040:	8b 04 24             	mov    (%esp),%eax
402043:	89 58 08             	mov    %ebx,0x8(%eax)
402046:	8b 04 24             	mov    (%esp),%eax
402049:	03 c3                	add    %ebx,%eax
40204b:	83 e8 0c             	sub    $0xc,%eax
40204e:	89 58 08             	mov    %ebx,0x8(%eax)
402051:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
402057:	7f 76                	jg     0x4020cf
402059:	8b c3                	mov    %ebx,%eax
40205b:	85 c0                	test   %eax,%eax
40205d:	79 03                	jns    0x402062
40205f:	83 c0 03             	add    $0x3,%eax
402062:	c1 f8 02             	sar    $0x2,%eax
402065:	8b 15 1c 16 46 00    	mov    0x46161c,%edx
40206b:	8b 54 82 f4          	mov    -0xc(%edx,%eax,4),%edx
40206f:	89 54 24 04          	mov    %edx,0x4(%esp)
402073:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
402078:	75 23                	jne    0x40209d
40207a:	8b 15 1c 16 46 00    	mov    0x46161c,%edx
402080:	8b 0c 24             	mov    (%esp),%ecx
402083:	89 4c 82 f4          	mov    %ecx,-0xc(%edx,%eax,4)
402087:	8b 04 24             	mov    (%esp),%eax
40208a:	8b 14 24             	mov    (%esp),%edx
40208d:	89 50 04             	mov    %edx,0x4(%eax)
402090:	8b 04 24             	mov    (%esp),%eax
402093:	8b 14 24             	mov    (%esp),%edx
402096:	89 10                	mov    %edx,(%eax)
402098:	e9 88 00 00 00       	jmp    0x402125
40209d:	8b 44 24 04          	mov    0x4(%esp),%eax
4020a1:	8b 00                	mov    (%eax),%eax
4020a3:	89 44 24 08          	mov    %eax,0x8(%esp)
4020a7:	8b 04 24             	mov    (%esp),%eax
4020aa:	8b 54 24 04          	mov    0x4(%esp),%edx
4020ae:	89 50 04             	mov    %edx,0x4(%eax)
4020b1:	8b 04 24             	mov    (%esp),%eax
4020b4:	8b 54 24 08          	mov    0x8(%esp),%edx
4020b8:	89 10                	mov    %edx,(%eax)
4020ba:	8b 44 24 04          	mov    0x4(%esp),%eax
4020be:	8b 14 24             	mov    (%esp),%edx
4020c1:	89 10                	mov    %edx,(%eax)
4020c3:	8b 44 24 08          	mov    0x8(%esp),%eax
4020c7:	8b 14 24             	mov    (%esp),%edx
4020ca:	89 50 04             	mov    %edx,0x4(%eax)
4020cd:	eb 56                	jmp    0x402125
4020cf:	81 fb 00 3c 00 00    	cmp    $0x3c00,%ebx
4020d5:	7c 0d                	jl     0x4020e4
4020d7:	8b d3                	mov    %ebx,%edx
4020d9:	8b c6                	mov    %esi,%eax
4020db:	e8 98 fe ff ff       	call   0x401f78
4020e0:	84 c0                	test   %al,%al
4020e2:	75 41                	jne    0x402125
4020e4:	a1 10 16 46 00       	mov    0x461610,%eax
4020e9:	89 44 24 04          	mov    %eax,0x4(%esp)
4020ed:	8b 04 24             	mov    (%esp),%eax
4020f0:	a3 10 16 46 00       	mov    %eax,0x461610
4020f5:	8b 44 24 04          	mov    0x4(%esp),%eax
4020f9:	8b 00                	mov    (%eax),%eax
4020fb:	89 44 24 08          	mov    %eax,0x8(%esp)
4020ff:	8b 04 24             	mov    (%esp),%eax
402102:	8b 54 24 04          	mov    0x4(%esp),%edx
402106:	89 50 04             	mov    %edx,0x4(%eax)
402109:	8b 04 24             	mov    (%esp),%eax
40210c:	8b 54 24 08          	mov    0x8(%esp),%edx
402110:	89 10                	mov    %edx,(%eax)
402112:	8b 44 24 04          	mov    0x4(%esp),%eax
402116:	8b 14 24             	mov    (%esp),%edx
402119:	89 10                	mov    %edx,(%eax)
40211b:	8b 44 24 08          	mov    0x8(%esp),%eax
40211f:	8b 14 24             	mov    (%esp),%edx
402122:	89 50 04             	mov    %edx,0x4(%eax)
402125:	83 c4 0c             	add    $0xc,%esp
402128:	5e                   	pop    %esi
402129:	5b                   	pop    %ebx
40212a:	c3                   	ret
40212b:	90                   	nop
40212c:	83 3d 14 16 46 00 00 	cmpl   $0x0,0x461614
402133:	7e 40                	jle    0x402175
402135:	83 3d 14 16 46 00 0c 	cmpl   $0xc,0x461614
40213c:	7d 0c                	jge    0x40214a
40213e:	c7 05 c0 15 46 00 07 	movl   $0x7,0x4615c0
402145:	00 00 00
402148:	eb 2b                	jmp    0x402175
40214a:	a1 14 16 46 00       	mov    0x461614,%eax
40214f:	83 c8 02             	or     $0x2,%eax
402152:	8b 15 18 16 46 00    	mov    0x461618,%edx
402158:	89 02                	mov    %eax,(%edx)
40215a:	a1 18 16 46 00       	mov    0x461618,%eax
40215f:	83 c0 04             	add    $0x4,%eax
402162:	e8 0d fd ff ff       	call   0x401e74
402167:	33 c0                	xor    %eax,%eax
402169:	a3 18 16 46 00       	mov    %eax,0x461618
40216e:	33 c0                	xor    %eax,%eax
402170:	a3 14 16 46 00       	mov    %eax,0x461614
402175:	c3                   	ret
402176:	8b c0                	mov    %eax,%eax
402178:	53                   	push   %ebx
402179:	56                   	push   %esi
40217a:	57                   	push   %edi
40217b:	83 c4 f0             	add    $0xfffffff0,%esp
40217e:	8b f0                	mov    %eax,%esi
402180:	8d 3c 24             	lea    (%esp),%edi
402183:	a5                   	movsl  %ds:(%esi),%es:(%edi)
402184:	a5                   	movsl  %ds:(%esi),%es:(%edi)
402185:	8b fc                	mov    %esp,%edi
402187:	e8 a0 ff ff ff       	call   0x40212c
40218c:	8d 4c 24 08          	lea    0x8(%esp),%ecx
402190:	8b d7                	mov    %edi,%edx
402192:	b8 20 16 46 00       	mov    $0x461620,%eax
402197:	e8 00 f3 ff ff       	call   0x40149c
40219c:	8b 5c 24 08          	mov    0x8(%esp),%ebx
4021a0:	85 db                	test   %ebx,%ebx
4021a2:	75 04                	jne    0x4021a8
4021a4:	33 c0                	xor    %eax,%eax
4021a6:	eb 52                	jmp    0x4021fa
4021a8:	8b 07                	mov    (%edi),%eax
4021aa:	3b d8                	cmp    %eax,%ebx
4021ac:	73 0a                	jae    0x4021b8
4021ae:	e8 0d fd ff ff       	call   0x401ec0
4021b3:	29 07                	sub    %eax,(%edi)
4021b5:	01 47 04             	add    %eax,0x4(%edi)
4021b8:	8b 07                	mov    (%edi),%eax
4021ba:	03 47 04             	add    0x4(%edi),%eax
4021bd:	8b f3                	mov    %ebx,%esi
4021bf:	03 74 24 0c          	add    0xc(%esp),%esi
4021c3:	3b c6                	cmp    %esi,%eax
4021c5:	73 08                	jae    0x4021cf
4021c7:	e8 6c fd ff ff       	call   0x401f38
4021cc:	01 47 04             	add    %eax,0x4(%edi)
4021cf:	8b 07                	mov    (%edi),%eax
4021d1:	03 47 04             	add    0x4(%edi),%eax
4021d4:	3b f0                	cmp    %eax,%esi
4021d6:	75 11                	jne    0x4021e9
4021d8:	83 e8 04             	sub    $0x4,%eax
4021db:	ba 04 00 00 00       	mov    $0x4,%edx
4021e0:	e8 53 fc ff ff       	call   0x401e38
4021e5:	83 6f 04 04          	subl   $0x4,0x4(%edi)
4021e9:	8b 07                	mov    (%edi),%eax
4021eb:	a3 18 16 46 00       	mov    %eax,0x461618
4021f0:	8b 47 04             	mov    0x4(%edi),%eax
4021f3:	a3 14 16 46 00       	mov    %eax,0x461614
4021f8:	b0 01                	mov    $0x1,%al
4021fa:	83 c4 10             	add    $0x10,%esp
4021fd:	5f                   	pop    %edi
4021fe:	5e                   	pop    %esi
4021ff:	5b                   	pop    %ebx
402200:	c3                   	ret
402201:	8d 40 00             	lea    0x0(%eax),%eax
402204:	53                   	push   %ebx
402205:	83 c4 f8             	add    $0xfffffff8,%esp
402208:	8b d8                	mov    %eax,%ebx
40220a:	8b d4                	mov    %esp,%edx
40220c:	8d 43 04             	lea    0x4(%ebx),%eax
40220f:	e8 f4 f6 ff ff       	call   0x401908
402214:	83 3c 24 00          	cmpl   $0x0,(%esp)
402218:	74 0b                	je     0x402225
40221a:	8b c4                	mov    %esp,%eax
40221c:	e8 57 ff ff ff       	call   0x402178
402221:	84 c0                	test   %al,%al
402223:	75 04                	jne    0x402229
402225:	33 c0                	xor    %eax,%eax
402227:	eb 02                	jmp    0x40222b
402229:	b0 01                	mov    $0x1,%al
40222b:	59                   	pop    %ecx
40222c:	5a                   	pop    %edx
40222d:	5b                   	pop    %ebx
40222e:	c3                   	ret
40222f:	90                   	nop
402230:	53                   	push   %ebx
402231:	56                   	push   %esi
402232:	83 c4 f8             	add    $0xfffffff8,%esp
402235:	8b f2                	mov    %edx,%esi
402237:	8b d8                	mov    %eax,%ebx
402239:	8b cc                	mov    %esp,%ecx
40223b:	8d 56 04             	lea    0x4(%esi),%edx
40223e:	8b c3                	mov    %ebx,%eax
402240:	e8 6b f7 ff ff       	call   0x4019b0
402245:	83 3c 24 00          	cmpl   $0x0,(%esp)
402249:	74 0b                	je     0x402256
40224b:	8b c4                	mov    %esp,%eax
40224d:	e8 26 ff ff ff       	call   0x402178
402252:	84 c0                	test   %al,%al
402254:	75 04                	jne    0x40225a
402256:	33 c0                	xor    %eax,%eax
402258:	eb 02                	jmp    0x40225c
40225a:	b0 01                	mov    $0x1,%al
40225c:	59                   	pop    %ecx
40225d:	5a                   	pop    %edx
40225e:	5e                   	pop    %esi
40225f:	5b                   	pop    %ebx
402260:	c3                   	ret
402261:	8d 40 00             	lea    0x0(%eax),%eax
402264:	51                   	push   %ecx
402265:	8b d4                	mov    %esp,%edx
402267:	33 c9                	xor    %ecx,%ecx
402269:	89 0a                	mov    %ecx,(%edx)
40226b:	85 c0                	test   %eax,%eax
40226d:	79 03                	jns    0x402272
40226f:	83 c0 03             	add    $0x3,%eax
402272:	c1 f8 02             	sar    $0x2,%eax
402275:	3d 00 04 00 00       	cmp    $0x400,%eax
40227a:	7f 19                	jg     0x402295
40227c:	8b 0d 1c 16 46 00    	mov    0x46161c,%ecx
402282:	8b 4c 81 f4          	mov    -0xc(%ecx,%eax,4),%ecx
402286:	89 0a                	mov    %ecx,(%edx)
402288:	83 3a 00             	cmpl   $0x0,(%edx)
40228b:	75 08                	jne    0x402295
40228d:	40                   	inc    %eax
40228e:	3d 01 04 00 00       	cmp    $0x401,%eax
402293:	75 e7                	jne    0x40227c
402295:	8b 02                	mov    (%edx),%eax
402297:	5a                   	pop    %edx
402298:	c3                   	ret
402299:	8d 40 00             	lea    0x0(%eax),%eax
40229c:	53                   	push   %ebx
40229d:	56                   	push   %esi
40229e:	57                   	push   %edi
40229f:	55                   	push   %ebp
4022a0:	83 c4 f4             	add    $0xfffffff4,%esp
4022a3:	8b d8                	mov    %eax,%ebx
4022a5:	8d 74 24 08          	lea    0x8(%esp),%esi
4022a9:	bf 10 16 46 00       	mov    $0x461610,%edi
4022ae:	bd 14 16 46 00       	mov    $0x461614,%ebp
4022b3:	a1 08 16 46 00       	mov    0x461608,%eax
4022b8:	89 06                	mov    %eax,(%esi)
4022ba:	8b 06                	mov    (%esi),%eax
4022bc:	3b 58 08             	cmp    0x8(%eax),%ebx
4022bf:	0f 8e ab 00 00 00    	jle    0x402370
4022c5:	8b 07                	mov    (%edi),%eax
4022c7:	89 06                	mov    %eax,(%esi)
4022c9:	8b 06                	mov    (%esi),%eax
4022cb:	8b 40 08             	mov    0x8(%eax),%eax
4022ce:	3b d8                	cmp    %eax,%ebx
4022d0:	0f 8e 9a 00 00 00    	jle    0x402370
4022d6:	8b 16                	mov    (%esi),%edx
4022d8:	89 5a 08             	mov    %ebx,0x8(%edx)
4022db:	8b 16                	mov    (%esi),%edx
4022dd:	8b 52 04             	mov    0x4(%edx),%edx
4022e0:	89 16                	mov    %edx,(%esi)
4022e2:	8b 16                	mov    (%esi),%edx
4022e4:	3b 5a 08             	cmp    0x8(%edx),%ebx
4022e7:	7f f2                	jg     0x4022db
4022e9:	8b 17                	mov    (%edi),%edx
4022eb:	89 42 08             	mov    %eax,0x8(%edx)
4022ee:	8b 06                	mov    (%esi),%eax
4022f0:	3b 07                	cmp    (%edi),%eax
4022f2:	74 06                	je     0x4022fa
4022f4:	8b 06                	mov    (%esi),%eax
4022f6:	89 07                	mov    %eax,(%edi)
4022f8:	eb 76                	jmp    0x402370
4022fa:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
402300:	7f 0e                	jg     0x402310
402302:	8b c3                	mov    %ebx,%eax
402304:	e8 5b ff ff ff       	call   0x402264
402309:	89 06                	mov    %eax,(%esi)
40230b:	83 3e 00             	cmpl   $0x0,(%esi)
40230e:	75 60                	jne    0x402370
402310:	8b c3                	mov    %ebx,%eax
402312:	e8 ed fe ff ff       	call   0x402204
402317:	84 c0                	test   %al,%al
402319:	75 0a                	jne    0x402325
40231b:	33 c0                	xor    %eax,%eax
40231d:	89 04 24             	mov    %eax,(%esp)
402320:	e9 b4 00 00 00       	jmp    0x4023d9
402325:	3b 5d 00             	cmp    0x0(%ebp),%ebx
402328:	7f 89                	jg     0x4022b3
40232a:	29 5d 00             	sub    %ebx,0x0(%ebp)
40232d:	83 7d 00 0c          	cmpl   $0xc,0x0(%ebp)
402331:	7d 08                	jge    0x40233b
402333:	03 5d 00             	add    0x0(%ebp),%ebx
402336:	33 c0                	xor    %eax,%eax
402338:	89 45 00             	mov    %eax,0x0(%ebp)
40233b:	a1 18 16 46 00       	mov    0x461618,%eax
402340:	89 44 24 04          	mov    %eax,0x4(%esp)
402344:	01 1d 18 16 46 00    	add    %ebx,0x461618
40234a:	8b c3                	mov    %ebx,%eax
40234c:	83 c8 02             	or     $0x2,%eax
40234f:	8b 54 24 04          	mov    0x4(%esp),%edx
402353:	89 02                	mov    %eax,(%edx)
402355:	8b 44 24 04          	mov    0x4(%esp),%eax
402359:	83 c0 04             	add    $0x4,%eax