402056:	66 85 c0             	test   %ax,%ax
402059:	75 f5                	jne    0x402050
40205b:	8b 46 14             	mov    0x14(%esi),%eax
40205e:	2b ca                	sub    %edx,%ecx
402060:	8b 56 10             	mov    0x10(%esi),%edx
402063:	2b c2                	sub    %edx,%eax
402065:	d1 f9                	sar    $1,%ecx
402067:	3b c8                	cmp    %eax,%ecx
402069:	77 36                	ja     0x4020a1
40206b:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40206f:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
402072:	57                   	push   %edi
402073:	89 45 08             	mov    %eax,0x8(%ebp)
402076:	8b fe                	mov    %esi,%edi
402078:	89 46 10             	mov    %eax,0x10(%esi)
40207b:	72 02                	jb     0x40207f
40207d:	8b 3e                	mov    (%esi),%edi
40207f:	03 c9                	add    %ecx,%ecx
402081:	8d 14 57             	lea    (%edi,%edx,2),%edx
402084:	51                   	push   %ecx
402085:	53                   	push   %ebx
402086:	52                   	push   %edx
402087:	e8 c4 33 00 00       	call   0x405450
40208c:	8b 45 08             	mov    0x8(%ebp),%eax
40208f:	83 c4 0c             	add    $0xc,%esp
402092:	33 c9                	xor    %ecx,%ecx
402094:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
402098:	8b c6                	mov    %esi,%eax
40209a:	5f                   	pop    %edi
40209b:	5e                   	pop    %esi
40209c:	5b                   	pop    %ebx
40209d:	5d                   	pop    %ebp
40209e:	c2 04 00             	ret    $0x4
4020a1:	51                   	push   %ecx
4020a2:	53                   	push   %ebx
4020a3:	ff 75 08             	push   0x8(%ebp)
4020a6:	51                   	push   %ecx
4020a7:	8b ce                	mov    %esi,%ecx
4020a9:	e8 72 03 00 00       	call   0x402420
4020ae:	5e                   	pop    %esi
4020af:	5b                   	pop    %ebx
4020b0:	5d                   	pop    %ebp
4020b1:	c2 04 00             	ret    $0x4
4020b4:	cc                   	int3
4020b5:	cc                   	int3
4020b6:	cc                   	int3
4020b7:	cc                   	int3
4020b8:	cc                   	int3
4020b9:	cc                   	int3
4020ba:	cc                   	int3
4020bb:	cc                   	int3
4020bc:	cc                   	int3
4020bd:	cc                   	int3
4020be:	cc                   	int3
4020bf:	cc                   	int3
4020c0:	55                   	push   %ebp
4020c1:	8b ec                	mov    %esp,%ebp
4020c3:	8b 45 0c             	mov    0xc(%ebp),%eax
4020c6:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
4020c9:	8b 45 08             	mov    0x8(%ebp),%eax
4020cc:	c1 e1 03             	shl    $0x3,%ecx
4020cf:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4020d5:	72 12                	jb     0x4020e9
4020d7:	8b 50 fc             	mov    -0x4(%eax),%edx
4020da:	83 c1 23             	add    $0x23,%ecx
4020dd:	2b c2                	sub    %edx,%eax
4020df:	83 c0 fc             	add    $0xfffffffc,%eax
4020e2:	83 f8 1f             	cmp    $0x1f,%eax
4020e5:	77 10                	ja     0x4020f7
4020e7:	8b c2                	mov    %edx,%eax
4020e9:	51                   	push   %ecx
4020ea:	50                   	push   %eax
4020eb:	e8 8e 0a 00 00       	call   0x402b7e
4020f0:	83 c4 08             	add    $0x8,%esp
4020f3:	5d                   	pop    %ebp
4020f4:	c2 08 00             	ret    $0x8
4020f7:	e8 30 3c 00 00       	call   0x405d2c
4020fc:	cc                   	int3
4020fd:	cc                   	int3
4020fe:	cc                   	int3
4020ff:	cc                   	int3
402100:	68 c0 3d 41 00       	push   $0x413dc0
402105:	e8 54 0a 00 00       	call   0x402b5e
40210a:	cc                   	int3
40210b:	cc                   	int3
40210c:	cc                   	int3
40210d:	cc                   	int3
40210e:	cc                   	int3
40210f:	cc                   	int3
402110:	55                   	push   %ebp
402111:	8b ec                	mov    %esp,%ebp
402113:	51                   	push   %ecx
402114:	56                   	push   %esi
402115:	8b 75 0c             	mov    0xc(%ebp),%esi
402118:	8b c1                	mov    %ecx,%eax
40211a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40211d:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
402123:	0f 87 cd 00 00 00    	ja     0x4021f6
402129:	c7 40 14 07 00 00 00 	movl   $0x7,0x14(%eax)
402130:	83 fe 08             	cmp    $0x8,%esi
402133:	73 22                	jae    0x402157
402135:	89 70 10             	mov    %esi,0x10(%eax)
402138:	03 f6                	add    %esi,%esi
40213a:	56                   	push   %esi
40213b:	ff 75 08             	push   0x8(%ebp)
40213e:	50                   	push   %eax
40213f:	e8 0c 33 00 00       	call   0x405450
402144:	8b 45 fc             	mov    -0x4(%ebp),%eax
402147:	83 c4 0c             	add    $0xc,%esp
40214a:	33 c9                	xor    %ecx,%ecx
40214c:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
402150:	5e                   	pop    %esi
402151:	8b e5                	mov    %ebp,%esp
402153:	5d                   	pop    %ebp
402154:	c2 08 00             	ret    $0x8
402157:	53                   	push   %ebx
402158:	8b de                	mov    %esi,%ebx
40215a:	83 cb 07             	or     $0x7,%ebx
40215d:	57                   	push   %edi
40215e:	81 fb fe ff ff 7f    	cmp    $0x7ffffffe,%ebx
402164:	76 0e                	jbe    0x402174
402166:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
40216b:	bb fe ff ff 7f       	mov    $0x7ffffffe,%ebx
402170:	03 c9                	add    %ecx,%ecx
402172:	eb 1f                	jmp    0x402193
402174:	b9 0a 00 00 00       	mov    $0xa,%ecx
402179:	3b d9                	cmp    %ecx,%ebx
40217b:	0f 42 d9             	cmovb  %ecx,%ebx
40217e:	8d 4b 01             	lea    0x1(%ebx),%ecx
402181:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
402187:	77 68                	ja     0x4021f1
402189:	03 c9                	add    %ecx,%ecx
40218b:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
402191:	72 22                	jb     0x4021b5
402193:	8d 41 23             	lea    0x23(%ecx),%eax
402196:	3b c1                	cmp    %ecx,%eax
402198:	76 57                	jbe    0x4021f1
40219a:	50                   	push   %eax
40219b:	e8 0f 0a 00 00       	call   0x402baf
4021a0:	83 c4 04             	add    $0x4,%esp
4021a3:	85 c0                	test   %eax,%eax
4021a5:	74 54                	je     0x4021fb
4021a7:	8d 78 23             	lea    0x23(%eax),%edi
4021aa:	83 e7 e0             	and    $0xffffffe0,%edi
4021ad:	89 47 fc             	mov    %eax,-0x4(%edi)
4021b0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4021b3:	eb 16                	jmp    0x4021cb
4021b5:	85 c9                	test   %ecx,%ecx
4021b7:	74 10                	je     0x4021c9
4021b9:	51                   	push   %ecx
4021ba:	e8 f0 09 00 00       	call   0x402baf
4021bf:	8b f8                	mov    %eax,%edi
4021c1:	83 c4 04             	add    $0x4,%esp
4021c4:	8b 45 fc             	mov    -0x4(%ebp),%eax
4021c7:	eb 02                	jmp    0x4021cb
4021c9:	33 ff                	xor    %edi,%edi
4021cb:	89 70 10             	mov    %esi,0x10(%eax)
4021ce:	03 f6                	add    %esi,%esi
4021d0:	56                   	push   %esi
4021d1:	ff 75 08             	push   0x8(%ebp)
4021d4:	89 38                	mov    %edi,(%eax)
4021d6:	57                   	push   %edi
4021d7:	89 58 14             	mov    %ebx,0x14(%eax)
4021da:	e8 71 32 00 00       	call   0x405450
4021df:	83 c4 0c             	add    $0xc,%esp
4021e2:	33 c0                	xor    %eax,%eax
4021e4:	66 89 04 3e          	mov    %ax,(%esi,%edi,1)
4021e8:	5f                   	pop    %edi
4021e9:	5b                   	pop    %ebx
4021ea:	5e                   	pop    %esi
4021eb:	8b e5                	mov    %ebp,%esp
4021ed:	5d                   	pop    %ebp
4021ee:	c2 08 00             	ret    $0x8
4021f1:	e8 ba ee ff ff       	call   0x4010b0
4021f6:	e8 55 ef ff ff       	call   0x401150
4021fb:	e8 2c 3b 00 00       	call   0x405d2c
402200:	cc                   	int3
402201:	cc                   	int3
402202:	cc                   	int3
402203:	cc                   	int3
402204:	cc                   	int3
402205:	cc                   	int3
402206:	cc                   	int3
402207:	cc                   	int3
402208:	cc                   	int3
402209:	cc                   	int3
40220a:	cc                   	int3
40220b:	cc                   	int3
40220c:	cc                   	int3
40220d:	cc                   	int3
40220e:	cc                   	int3
40220f:	cc                   	int3
402210:	56                   	push   %esi
402211:	57                   	push   %edi
402212:	8b fa                	mov    %edx,%edi
402214:	8b f1                	mov    %ecx,%esi
402216:	3b f7                	cmp    %edi,%esi
402218:	74 55                	je     0x40226f
40221a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
402220:	8b 4e 14             	mov    0x14(%esi),%ecx
402223:	83 f9 08             	cmp    $0x8,%ecx
402226:	72 2d                	jb     0x402255
402228:	8b 06                	mov    (%esi),%eax
40222a:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
402231:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
402237:	72 12                	jb     0x40224b
402239:	8b 50 fc             	mov    -0x4(%eax),%edx
40223c:	83 c1 23             	add    $0x23,%ecx
40223f:	2b c2                	sub    %edx,%eax
402241:	83 c0 fc             	add    $0xfffffffc,%eax
402244:	83 f8 1f             	cmp    $0x1f,%eax
402247:	77 29                	ja     0x402272
402249:	8b c2                	mov    %edx,%eax
40224b:	51                   	push   %ecx
40224c:	50                   	push   %eax
40224d:	e8 2c 09 00 00       	call   0x402b7e
402252:	83 c4 08             	add    $0x8,%esp
402255:	33 c0                	xor    %eax,%eax
402257:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40225e:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402265:	66 89 06             	mov    %ax,(%esi)
402268:	83 c6 18             	add    $0x18,%esi
40226b:	3b f7                	cmp    %edi,%esi
40226d:	75 b1                	jne    0x402220
40226f:	5f                   	pop    %edi
402270:	5e                   	pop    %esi
402271:	c3                   	ret
402272:	e8 b5 3a 00 00       	call   0x405d2c
402277:	cc                   	int3
402278:	cc                   	int3
402279:	cc                   	int3
40227a:	cc                   	int3
40227b:	cc                   	int3
40227c:	cc                   	int3
40227d:	cc                   	int3
40227e:	cc                   	int3
40227f:	cc                   	int3
402280:	55                   	push   %ebp
402281:	8b ec                	mov    %esp,%ebp
402283:	83 ec 0c             	sub    $0xc,%esp
402286:	8b 55 08             	mov    0x8(%ebp),%edx
402289:	53                   	push   %ebx
40228a:	56                   	push   %esi
40228b:	57                   	push   %edi
40228c:	8b f9                	mov    %ecx,%edi
40228e:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
402293:	8b c1                	mov    %ecx,%eax
402295:	89 7d f8             	mov    %edi,-0x8(%ebp)
402298:	8b 5f 10             	mov    0x10(%edi),%ebx
40229b:	2b c3                	sub    %ebx,%eax
40229d:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4022a0:	3b c2                	cmp    %edx,%eax
4022a2:	0f 82 64 01 00 00    	jb     0x40240c
4022a8:	8b 77 14             	mov    0x14(%edi),%esi
4022ab:	8d 04 13             	lea    (%ebx,%edx,1),%eax
4022ae:	8b d8                	mov    %eax,%ebx
4022b0:	89 45 f4             	mov    %eax,-0xc(%ebp)
4022b3:	83 cb 07             	or     $0x7,%ebx
4022b6:	89 75 08             	mov    %esi,0x8(%ebp)
4022b9:	3b d9                	cmp    %ecx,%ebx
4022bb:	76 0b                	jbe    0x4022c8
4022bd:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
4022c2:	8b d9                	mov    %ecx,%ebx
4022c4:	03 c0                	add    %eax,%eax
4022c6:	eb 36                	jmp    0x4022fe
4022c8:	8b c6                	mov    %esi,%eax
4022ca:	d1 e8                	shr    $1,%eax
4022cc:	2b c8                	sub    %eax,%ecx
4022ce:	3b f1                	cmp    %ecx,%esi
4022d0:	76 0e                	jbe    0x4022e0
4022d2:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
4022d7:	bb fe ff ff 7f       	mov    $0x7ffffffe,%ebx
4022dc:	03 c0                	add    %eax,%eax
4022de:	eb 1e                	jmp    0x4022fe
4022e0:	03 c6                	add    %esi,%eax
4022e2:	3b d8                	cmp    %eax,%ebx
4022e4:	0f 42 d8             	cmovb  %eax,%ebx
4022e7:	8d 43 01             	lea    0x1(%ebx),%eax
4022ea:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4022ef:	0f 87 12 01 00 00    	ja     0x402407
4022f5:	03 c0                	add    %eax,%eax
4022f7:	3d 00 10 00 00       	cmp    $0x1000,%eax
4022fc:	72 27                	jb     0x402325
4022fe:	8d 48 23             	lea    0x23(%eax),%ecx
402301:	3b c8                	cmp    %eax,%ecx
402303:	0f 86 fe 00 00 00    	jbe    0x402407
402309:	51                   	push   %ecx
40230a:	e8 a0 08 00 00       	call   0x402baf
40230f:	83 c4 04             	add    $0x4,%esp
402312:	85 c0                	test   %eax,%eax
402314:	0f 84 f7 00 00 00    	je     0x402411
40231a:	8d 70 23             	lea    0x23(%eax),%esi
40231d:	83 e6 e0             	and    $0xffffffe0,%esi
402320:	89 46 fc             	mov    %eax,-0x4(%esi)
402323:	eb 13                	jmp    0x402338
402325:	85 c0                	test   %eax,%eax
402327:	74 0d                	je     0x402336
402329:	50                   	push   %eax
40232a:	e8 80 08 00 00       	call   0x402baf
40232f:	83 c4 04             	add    $0x4,%esp
402332:	8b f0                	mov    %eax,%esi
402334:	eb 02                	jmp    0x402338
402336:	33 f6                	xor    %esi,%esi
402338:	83 7d 08 08          	cmpl   $0x8,0x8(%ebp)
40233c:	8b 45 f4             	mov    -0xc(%ebp),%eax
40233f:	89 5f 14             	mov    %ebx,0x14(%edi)
402342:	8b 5d fc             	mov    -0x4(%ebp),%ebx
402345:	89 47 10             	mov    %eax,0x10(%edi)
402348:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40234b:	50                   	push   %eax
40234c:	72 77                	jb     0x4023c5
40234e:	8b 1f                	mov    (%edi),%ebx
402350:	53                   	push   %ebx
402351:	56                   	push   %esi
402352:	e8 f9 30 00 00       	call   0x405450
402357:	8b 55 fc             	mov    -0x4(%ebp),%edx
40235a:	83 c4 0c             	add    $0xc,%esp
40235d:	8d 04 12             	lea    (%edx,%edx,1),%eax
402360:	03 c6                	add    %esi,%eax
402362:	89 45 f4             	mov    %eax,-0xc(%ebp)
402365:	8b 45 10             	mov    0x10(%ebp),%eax
402368:	85 c0                	test   %eax,%eax
40236a:	74 16                	je     0x402382
40236c:	8b 7d f4             	mov    -0xc(%ebp),%edi
40236f:	8b c8                	mov    %eax,%ecx
402371:	33 c0                	xor    %eax,%eax
402373:	d1 e9                	shr    $1,%ecx
402375:	f3 ab                	rep stos %eax,%es:(%edi)
402377:	13 c9                	adc    %ecx,%ecx
402379:	66 f3 ab             	rep stos %ax,%es:(%edi)
40237c:	8b 7d f8             	mov    -0x8(%ebp),%edi
40237f:	8b 45 10             	mov    0x10(%ebp),%eax
402382:	03 c2                	add    %edx,%eax
402384:	33 c9                	xor    %ecx,%ecx
402386:	66 89 0c 46          	mov    %cx,(%esi,%eax,2)
40238a:	8b 45 08             	mov    0x8(%ebp),%eax
40238d:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
402394:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40239a:	72 12                	jb     0x4023ae
40239c:	8b 53 fc             	mov    -0x4(%ebx),%edx
40239f:	83 c1 23             	add    $0x23,%ecx
4023a2:	2b da                	sub    %edx,%ebx
4023a4:	8d 43 fc             	lea    -0x4(%ebx),%eax
4023a7:	83 f8 1f             	cmp    $0x1f,%eax
4023aa:	77 65                	ja     0x402411
4023ac:	8b da                	mov    %edx,%ebx
4023ae:	51                   	push   %ecx
4023af:	53                   	push   %ebx
4023b0:	e8 c9 07 00 00       	call   0x402b7e
4023b5:	83 c4 08             	add    $0x8,%esp