4021ba:	75 0e                	jne    0x4021ca
4021bc:	e8 bf f4 ff ff       	call   0x401680
4021c1:	8b c8                	mov    %eax,%ecx
4021c3:	8b 10                	mov    (%eax),%edx
4021c5:	ff 52 10             	call   *0x10(%edx)
4021c8:	8b d0                	mov    %eax,%edx
4021ca:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4021cd:	2b fe                	sub    %esi,%edi
4021cf:	8b 09                	mov    (%ecx),%ecx
4021d1:	8d 1c 79             	lea    (%ecx,%edi,2),%ebx
4021d4:	85 d2                	test   %edx,%edx
4021d6:	75 0a                	jne    0x4021e2
4021d8:	68 05 40 00 80       	push   $0x80004005
4021dd:	e8 de f1 ff ff       	call   0x4013c0
4021e2:	85 db                	test   %ebx,%ebx
4021e4:	75 0e                	jne    0x4021f4
4021e6:	85 f6                	test   %esi,%esi
4021e8:	74 0a                	je     0x4021f4
4021ea:	68 57 00 07 80       	push   $0x80070057
4021ef:	e8 cc f1 ff ff       	call   0x4013c0
4021f4:	8b 02                	mov    (%edx),%eax
4021f6:	8b ca                	mov    %edx,%ecx
4021f8:	6a 02                	push   $0x2
4021fa:	56                   	push   %esi
4021fb:	ff 10                	call   *(%eax)
4021fd:	85 c0                	test   %eax,%eax
4021ff:	75 05                	jne    0x402206
402201:	e8 4a 03 00 00       	call   0x402550
402206:	8b 7d 08             	mov    0x8(%ebp),%edi
402209:	83 c0 10             	add    $0x10,%eax
40220c:	89 07                	mov    %eax,(%edi)
40220e:	85 f6                	test   %esi,%esi
402210:	78 d8                	js     0x4021ea
402212:	3b 70 f8             	cmp    -0x8(%eax),%esi
402215:	7f d3                	jg     0x4021ea
402217:	89 70 f4             	mov    %esi,-0xc(%eax)
40221a:	8d 14 36             	lea    (%esi,%esi,1),%edx
40221d:	8b 07                	mov    (%edi),%eax
40221f:	33 c9                	xor    %ecx,%ecx
402221:	52                   	push   %edx
402222:	53                   	push   %ebx
402223:	66 89 0c 02          	mov    %cx,(%edx,%eax,1)
402227:	8b 0f                	mov    (%edi),%ecx
402229:	e8 f2 05 00 00       	call   0x402820
40222e:	83 c4 08             	add    $0x8,%esp
402231:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
402238:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40223f:	8b c7                	mov    %edi,%eax
402241:	8b 4d f4             	mov    -0xc(%ebp),%ecx
402244:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40224b:	59                   	pop    %ecx
40224c:	5f                   	pop    %edi
40224d:	5e                   	pop    %esi
40224e:	5b                   	pop    %ebx
40224f:	8b e5                	mov    %ebp,%esp
402251:	5d                   	pop    %ebp
402252:	c2 08 00             	ret    $0x8
402255:	cc                   	int3
402256:	cc                   	int3
402257:	cc                   	int3
402258:	cc                   	int3
402259:	cc                   	int3
40225a:	cc                   	int3
40225b:	cc                   	int3
40225c:	cc                   	int3
40225d:	cc                   	int3
40225e:	cc                   	int3
40225f:	cc                   	int3
402260:	55                   	push   %ebp
402261:	8b ec                	mov    %esp,%ebp
402263:	6a ff                	push   $0xffffffff
402265:	68 88 a1 41 00       	push   $0x41a188
40226a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
402270:	50                   	push   %eax
402271:	51                   	push   %ecx
402272:	a1 0c 30 42 00       	mov    0x42300c,%eax
402277:	33 c5                	xor    %ebp,%eax
402279:	50                   	push   %eax
40227a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40227d:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
402283:	89 4d f0             	mov    %ecx,-0x10(%ebp)
402286:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40228d:	83 c8 ff             	or     $0xffffffff,%eax
402290:	8b 11                	mov    (%ecx),%edx
402292:	83 ea 10             	sub    $0x10,%edx
402295:	f0 0f c1 42 0c       	lock xadd %eax,0xc(%edx)
40229a:	48                   	dec    %eax
40229b:	85 c0                	test   %eax,%eax
40229d:	7f 08                	jg     0x4022a7
40229f:	8b 0a                	mov    (%edx),%ecx
4022a1:	52                   	push   %edx
4022a2:	8b 01                	mov    (%ecx),%eax
4022a4:	ff 50 04             	call   *0x4(%eax)
4022a7:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4022aa:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4022b1:	59                   	pop    %ecx
4022b2:	8b e5                	mov    %ebp,%esp
4022b4:	5d                   	pop    %ebp
4022b5:	c3                   	ret
4022b6:	cc                   	int3
4022b7:	cc                   	int3
4022b8:	cc                   	int3
4022b9:	cc                   	int3
4022ba:	cc                   	int3
4022bb:	cc                   	int3
4022bc:	cc                   	int3
4022bd:	cc                   	int3
4022be:	cc                   	int3
4022bf:	cc                   	int3
4022c0:	55                   	push   %ebp
4022c1:	8b ec                	mov    %esp,%ebp
4022c3:	6a ff                	push   $0xffffffff
4022c5:	68 b8 a1 41 00       	push   $0x41a1b8
4022ca:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4022d0:	50                   	push   %eax
4022d1:	51                   	push   %ecx
4022d2:	56                   	push   %esi
4022d3:	57                   	push   %edi
4022d4:	a1 0c 30 42 00       	mov    0x42300c,%eax
4022d9:	33 c5                	xor    %ebp,%eax
4022db:	50                   	push   %eax
4022dc:	8d 45 f4             	lea    -0xc(%ebp),%eax
4022df:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4022e5:	8b f1                	mov    %ecx,%esi
4022e7:	89 75 f0             	mov    %esi,-0x10(%ebp)
4022ea:	e8 91 f3 ff ff       	call   0x401680
4022ef:	8b c8                	mov    %eax,%ecx
4022f1:	85 c9                	test   %ecx,%ecx
4022f3:	75 0a                	jne    0x4022ff
4022f5:	68 05 40 00 80       	push   $0x80004005
4022fa:	e8 c1 f0 ff ff       	call   0x4013c0
4022ff:	8b 01                	mov    (%ecx),%eax
402301:	ff 50 0c             	call   *0xc(%eax)
402304:	83 c0 10             	add    $0x10,%eax
402307:	89 06                	mov    %eax,(%esi)
402309:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
402310:	8b 55 08             	mov    0x8(%ebp),%edx
402313:	85 d2                	test   %edx,%edx
402315:	74 3a                	je     0x402351
402317:	f7 c2 00 00 ff ff    	test   $0xffff0000,%edx
40231d:	75 19                	jne    0x402338
40231f:	0f b7 fa             	movzwl %dx,%edi
402322:	8b cf                	mov    %edi,%ecx
402324:	e8 f7 f1 ff ff       	call   0x401520
402329:	85 c0                	test   %eax,%eax
40232b:	74 2f                	je     0x40235c
40232d:	57                   	push   %edi
40232e:	50                   	push   %eax
40232f:	8b ce                	mov    %esi,%ecx
402331:	e8 7a 01 00 00       	call   0x4024b0
402336:	eb 24                	jmp    0x40235c
402338:	8b ca                	mov    %edx,%ecx
40233a:	8d 79 02             	lea    0x2(%ecx),%edi
40233d:	0f 1f 00             	nopl   (%eax)
402340:	66 8b 01             	mov    (%ecx),%ax
402343:	83 c1 02             	add    $0x2,%ecx
402346:	66 85 c0             	test   %ax,%ax
402349:	75 f5                	jne    0x402340
40234b:	2b cf                	sub    %edi,%ecx
40234d:	d1 f9                	sar    $1,%ecx
40234f:	eb 02                	jmp    0x402353
402351:	33 c9                	xor    %ecx,%ecx
402353:	51                   	push   %ecx
402354:	52                   	push   %edx
402355:	8b ce                	mov    %esi,%ecx
402357:	e8 a4 00 00 00       	call   0x402400
40235c:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
402363:	8b c6                	mov    %esi,%eax
402365:	8b 4d f4             	mov    -0xc(%ebp),%ecx
402368:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40236f:	59                   	pop    %ecx
402370:	5f                   	pop    %edi
402371:	5e                   	pop    %esi
402372:	8b e5                	mov    %ebp,%esp
402374:	5d                   	pop    %ebp
402375:	c2 04 00             	ret    $0x4
402378:	cc                   	int3
402379:	cc                   	int3
40237a:	cc                   	int3
40237b:	cc                   	int3
40237c:	cc                   	int3
40237d:	cc                   	int3
40237e:	cc                   	int3
40237f:	cc                   	int3
402380:	8b 11                	mov    (%ecx),%edx
402382:	83 c8 ff             	or     $0xffffffff,%eax
402385:	83 ea 10             	sub    $0x10,%edx
402388:	f0 0f c1 42 0c       	lock xadd %eax,0xc(%edx)
40238d:	48                   	dec    %eax
40238e:	85 c0                	test   %eax,%eax
402390:	7f 08                	jg     0x40239a
402392:	8b 0a                	mov    (%edx),%ecx
402394:	52                   	push   %edx
402395:	8b 01                	mov    (%ecx),%eax
402397:	ff 50 04             	call   *0x4(%eax)
40239a:	c3                   	ret
40239b:	cc                   	int3
40239c:	cc                   	int3
40239d:	cc                   	int3
40239e:	cc                   	int3
40239f:	cc                   	int3
4023a0:	56                   	push   %esi
4023a1:	8b f1                	mov    %ecx,%esi
4023a3:	57                   	push   %edi
4023a4:	8b 0e                	mov    (%esi),%ecx
4023a6:	8b 01                	mov    (%ecx),%eax
4023a8:	ff 50 10             	call   *0x10(%eax)
4023ab:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
4023af:	8b c8                	mov    %eax,%ecx
4023b1:	8d 46 0c             	lea    0xc(%esi),%eax
4023b4:	7c 0e                	jl     0x4023c4
4023b6:	3b 0e                	cmp    (%esi),%ecx
4023b8:	75 0a                	jne    0x4023c4
4023ba:	8b fe                	mov    %esi,%edi
4023bc:	f0 ff 00             	lock incl (%eax)
4023bf:	8b c7                	mov    %edi,%eax
4023c1:	5f                   	pop    %edi
4023c2:	5e                   	pop    %esi
4023c3:	c3                   	ret
4023c4:	8b 01                	mov    (%ecx),%eax
4023c6:	6a 02                	push   $0x2
4023c8:	ff 76 04             	push   0x4(%esi)
4023cb:	ff 10                	call   *(%eax)
4023cd:	8b f8                	mov    %eax,%edi
4023cf:	85 ff                	test   %edi,%edi
4023d1:	74 25                	je     0x4023f8
4023d3:	8b 46 04             	mov    0x4(%esi),%eax
4023d6:	8d 4f 10             	lea    0x10(%edi),%ecx
4023d9:	89 47 04             	mov    %eax,0x4(%edi)
4023dc:	8b 46 04             	mov    0x4(%esi),%eax
4023df:	8d 14 45 02 00 00 00 	lea    0x2(,%eax,2),%edx
4023e6:	52                   	push   %edx
4023e7:	8d 46 10             	lea    0x10(%esi),%eax
4023ea:	50                   	push   %eax
4023eb:	e8 30 04 00 00       	call   0x402820
4023f0:	83 c4 08             	add    $0x8,%esp
4023f3:	8b c7                	mov    %edi,%eax
4023f5:	5f                   	pop    %edi
4023f6:	5e                   	pop    %esi
4023f7:	c3                   	ret
4023f8:	e8 53 01 00 00       	call   0x402550
4023fd:	cc                   	int3
4023fe:	cc                   	int3
4023ff:	cc                   	int3
402400:	55                   	push   %ebp
402401:	8b ec                	mov    %esp,%ebp
402403:	56                   	push   %esi
402404:	8b 75 0c             	mov    0xc(%ebp),%esi
402407:	57                   	push   %edi
402408:	8b f9                	mov    %ecx,%edi
40240a:	85 f6                	test   %esi,%esi
40240c:	75 0b                	jne    0x402419
40240e:	e8 bd 01 00 00       	call   0x4025d0
402413:	5f                   	pop    %edi
402414:	5e                   	pop    %esi
402415:	5d                   	pop    %ebp
402416:	c2 08 00             	ret    $0x8
402419:	8b 55 08             	mov    0x8(%ebp),%edx
40241c:	85 d2                	test   %edx,%edx
40241e:	74 70                	je     0x402490
402420:	8b 07                	mov    (%edi),%eax
402422:	53                   	push   %ebx
402423:	8b da                	mov    %edx,%ebx
402425:	2b d8                	sub    %eax,%ebx
402427:	8b 48 f4             	mov    -0xc(%eax),%ecx
40242a:	d1 fb                	sar    $1,%ebx
40242c:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40242f:	85 f6                	test   %esi,%esi
402431:	78 67                	js     0x40249a
402433:	b9 01 00 00 00       	mov    $0x1,%ecx
402438:	2b 48 fc             	sub    -0x4(%eax),%ecx
40243b:	8b 40 f8             	mov    -0x8(%eax),%eax
40243e:	2b c6                	sub    %esi,%eax
402440:	0b c8                	or     %eax,%ecx
402442:	7d 0b                	jge    0x40244f
402444:	56                   	push   %esi
402445:	8b cf                	mov    %edi,%ecx
402447:	e8 b4 02 00 00       	call   0x402700
40244c:	8b 55 08             	mov    0x8(%ebp),%edx
40244f:	8b 0f                	mov    (%edi),%ecx
402451:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
402454:	77 0f                	ja     0x402465
402456:	8b 51 f8             	mov    -0x8(%ecx),%edx
402459:	8d 04 59             	lea    (%ecx,%ebx,2),%eax
40245c:	56                   	push   %esi
40245d:	50                   	push   %eax
40245e:	e8 fd 00 00 00       	call   0x402560
402463:	eb 0f                	jmp    0x402474
402465:	8d 04 36             	lea    (%esi,%esi,1),%eax
402468:	50                   	push   %eax
402469:	52                   	push   %edx
40246a:	8b 51 f8             	mov    -0x8(%ecx),%edx
40246d:	03 d2                	add    %edx,%edx
40246f:	e8 ac 03 00 00       	call   0x402820
402474:	8b 07                	mov    (%edi),%eax
402476:	83 c4 08             	add    $0x8,%esp
402479:	5b                   	pop    %ebx
40247a:	3b 70 f8             	cmp    -0x8(%eax),%esi
40247d:	7f 11                	jg     0x402490
40247f:	89 70 f4             	mov    %esi,-0xc(%eax)
402482:	33 c9                	xor    %ecx,%ecx
402484:	8b 07                	mov    (%edi),%eax
402486:	5f                   	pop    %edi
402487:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
40248b:	5e                   	pop    %esi
40248c:	5d                   	pop    %ebp
40248d:	c2 08 00             	ret    $0x8
402490:	68 57 00 07 80       	push   $0x80070057
402495:	e8 26 ef ff ff       	call   0x4013c0
40249a:	68 57 00 07 80       	push   $0x80070057
40249f:	e8 1c ef ff ff       	call   0x4013c0
4024a4:	cc                   	int3
4024a5:	cc                   	int3
4024a6:	cc                   	int3
4024a7:	cc                   	int3
4024a8:	cc                   	int3
4024a9:	cc                   	int3
4024aa:	cc                   	int3
4024ab:	cc                   	int3
4024ac:	cc                   	int3
4024ad:	cc                   	int3
4024ae:	cc                   	int3
4024af:	cc                   	int3
4024b0:	55                   	push   %ebp
4024b1:	8b ec                	mov    %esp,%ebp
4024b3:	53                   	push   %ebx
4024b4:	8b 5d 08             	mov    0x8(%ebp),%ebx
4024b7:	56                   	push   %esi
4024b8:	8b 75 0c             	mov    0xc(%ebp),%esi
4024bb:	8b c6                	mov    %esi,%eax
4024bd:	57                   	push   %edi
4024be:	c1 e8 04             	shr    $0x4,%eax
4024c1:	8b f9                	mov    %ecx,%edi
4024c3:	40                   	inc    %eax
4024c4:	6a 06                	push   $0x6
4024c6:	0f b7 c0             	movzwl %ax,%eax
4024c9:	50                   	push   %eax
4024ca:	53                   	push   %ebx
4024cb:	ff 15 5c b0 41 00    	call   *0x41b05c
4024d1:	85 c0                	test   %eax,%eax
4024d3:	74 66                	je     0x40253b
4024d5:	56                   	push   %esi
4024d6:	8b d0                	mov    %eax,%edx
4024d8:	8b cb                	mov    %ebx,%ecx
4024da:	e8 d1 ef ff ff       	call   0x4014b0
4024df:	8b d8                	mov    %eax,%ebx
4024e1:	83 c4 04             	add    $0x4,%esp
4024e4:	85 db                	test   %ebx,%ebx
4024e6:	74 53                	je     0x40253b
4024e8:	8b 07                	mov    (%edi),%eax