40f17b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f17e:	85 c0                	test   %eax,%eax
40f180:	0f 85 96 00 00 00    	jne    0x40f21c
40f186:	a1 64 20 42 00       	mov    0x422064,%eax
40f18b:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40f18e:	74 30                	je     0x40f1c0
40f190:	85 c0                	test   %eax,%eax
40f192:	74 2c                	je     0x40f1c0
40f194:	e8 fc a7 ff ff       	call   0x409995
40f199:	85 c0                	test   %eax,%eax
40f19b:	75 14                	jne    0x40f1b1
40f19d:	e8 8d b5 ff ff       	call   0x40a72f
40f1a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f1a8:	83 cb ff             	or     $0xffffffff,%ebx
40f1ab:	56                   	push   %esi
40f1ac:	e9 ba 01 00 00       	jmp    0x40f36b
40f1b1:	e8 b2 02 00 00       	call   0x40f468
40f1b6:	a1 68 20 42 00       	mov    0x422068,%eax
40f1bb:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f1be:	eb 58                	jmp    0x40f218
40f1c0:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f1c4:	74 e5                	je     0x40f1ab
40f1c6:	85 c0                	test   %eax,%eax
40f1c8:	75 2b                	jne    0x40f1f5
40f1ca:	6a 04                	push   $0x4
40f1cc:	6a 01                	push   $0x1
40f1ce:	e8 6f b5 ff ff       	call   0x40a742
40f1d3:	53                   	push   %ebx
40f1d4:	a3 64 20 42 00       	mov    %eax,0x422064
40f1d9:	e8 c1 b5 ff ff       	call   0x40a79f
40f1de:	83 c4 0c             	add    $0xc,%esp
40f1e1:	39 1d 64 20 42 00    	cmp    %ebx,0x422064
40f1e7:	74 bf                	je     0x40f1a8
40f1e9:	a1 68 20 42 00       	mov    0x422068,%eax
40f1ee:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f1f1:	85 c0                	test   %eax,%eax
40f1f3:	75 27                	jne    0x40f21c
40f1f5:	6a 04                	push   $0x4
40f1f7:	6a 01                	push   $0x1
40f1f9:	e8 44 b5 ff ff       	call   0x40a742
40f1fe:	53                   	push   %ebx
40f1ff:	a3 68 20 42 00       	mov    %eax,0x422068
40f204:	e8 96 b5 ff ff       	call   0x40a79f
40f209:	a1 68 20 42 00       	mov    0x422068,%eax
40f20e:	83 c4 0c             	add    $0xc,%esp
40f211:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f214:	85 c0                	test   %eax,%eax
40f216:	74 90                	je     0x40f1a8
40f218:	85 c0                	test   %eax,%eax
40f21a:	74 8c                	je     0x40f1a8
40f21c:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f21f:	2b c6                	sub    %esi,%eax
40f221:	d1 f8                	sar    $1,%eax
40f223:	50                   	push   %eax
40f224:	56                   	push   %esi
40f225:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f228:	e8 55 02 00 00       	call   0x40f482
40f22d:	59                   	pop    %ecx
40f22e:	59                   	pop    %ecx
40f22f:	8b c8                	mov    %eax,%ecx
40f231:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f234:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f237:	85 c9                	test   %ecx,%ecx
40f239:	78 50                	js     0x40f28b
40f23b:	39 18                	cmp    %ebx,(%eax)
40f23d:	74 4c                	je     0x40f28b
40f23f:	ff 34 88             	push   (%eax,%ecx,4)
40f242:	e8 58 b5 ff ff       	call   0x40a79f
40f247:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f24a:	59                   	pop    %ecx
40f24b:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f24f:	75 30                	jne    0x40f281
40f251:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f254:	eb 08                	jmp    0x40f25e
40f256:	8b 44 91 04          	mov    0x4(%ecx,%edx,4),%eax
40f25a:	89 04 91             	mov    %eax,(%ecx,%edx,4)
40f25d:	42                   	inc    %edx
40f25e:	39 1c 91             	cmp    %ebx,(%ecx,%edx,4)
40f261:	75 f3                	jne    0x40f256
40f263:	6a 04                	push   $0x4
40f265:	52                   	push   %edx
40f266:	51                   	push   %ecx
40f267:	e8 ac 0e 00 00       	call   0x410118
40f26c:	53                   	push   %ebx
40f26d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f270:	e8 2a b5 ff ff       	call   0x40a79f
40f275:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f278:	83 c4 10             	add    $0x10,%esp
40f27b:	85 c0                	test   %eax,%eax
40f27d:	74 63                	je     0x40f2e2
40f27f:	eb 5c                	jmp    0x40f2dd
40f281:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f284:	8b fb                	mov    %ebx,%edi
40f286:	89 34 90             	mov    %esi,(%eax,%edx,4)
40f289:	eb 57                	jmp    0x40f2e2
40f28b:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f28f:	0f 84 16 ff ff ff    	je     0x40f1ab
40f295:	f7 d9                	neg    %ecx
40f297:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f29a:	8d 51 02             	lea    0x2(%ecx),%edx
40f29d:	3b d1                	cmp    %ecx,%edx
40f29f:	0f 82 03 ff ff ff    	jb     0x40f1a8
40f2a5:	81 fa ff ff ff 3f    	cmp    $0x3fffffff,%edx
40f2ab:	0f 83 f7 fe ff ff    	jae    0x40f1a8
40f2b1:	6a 04                	push   $0x4
40f2b3:	52                   	push   %edx
40f2b4:	50                   	push   %eax
40f2b5:	e8 5e 0e 00 00       	call   0x410118
40f2ba:	53                   	push   %ebx
40f2bb:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f2be:	e8 dc b4 ff ff       	call   0x40a79f
40f2c3:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f2c6:	83 c4 10             	add    $0x10,%esp
40f2c9:	85 c0                	test   %eax,%eax
40f2cb:	0f 84 d7 fe ff ff    	je     0x40f1a8
40f2d1:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f2d4:	8b fb                	mov    %ebx,%edi
40f2d6:	89 34 90             	mov    %esi,(%eax,%edx,4)
40f2d9:	89 5c 90 04          	mov    %ebx,0x4(%eax,%edx,4)
40f2dd:	a3 68 20 42 00       	mov    %eax,0x422068
40f2e2:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40f2e5:	0f 84 90 00 00 00    	je     0x40f37b
40f2eb:	8d 4e 02             	lea    0x2(%esi),%ecx
40f2ee:	66 8b 06             	mov    (%esi),%ax
40f2f1:	83 c6 02             	add    $0x2,%esi
40f2f4:	66 3b c3             	cmp    %bx,%ax
40f2f7:	75 f5                	jne    0x40f2ee
40f2f9:	2b f1                	sub    %ecx,%esi
40f2fb:	d1 fe                	sar    $1,%esi
40f2fd:	6a 02                	push   $0x2
40f2ff:	8d 46 02             	lea    0x2(%esi),%eax
40f302:	50                   	push   %eax
40f303:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f306:	e8 37 b4 ff ff       	call   0x40a742
40f30b:	8b f0                	mov    %eax,%esi
40f30d:	59                   	pop    %ecx
40f30e:	59                   	pop    %ecx
40f30f:	85 f6                	test   %esi,%esi
40f311:	75 08                	jne    0x40f31b
40f313:	53                   	push   %ebx
40f314:	e8 86 b4 ff ff       	call   0x40a79f
40f319:	eb 4e                	jmp    0x40f369
40f31b:	ff 75 08             	push   0x8(%ebp)
40f31e:	ff 75 f4             	push   -0xc(%ebp)
40f321:	56                   	push   %esi
40f322:	e8 c4 ec ff ff       	call   0x40dfeb
40f327:	83 c4 0c             	add    $0xc,%esp
40f32a:	85 c0                	test   %eax,%eax
40f32c:	75 71                	jne    0x40f39f
40f32e:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f331:	33 d2                	xor    %edx,%edx
40f333:	8d 48 01             	lea    0x1(%eax),%ecx
40f336:	66 89 14 46          	mov    %dx,(%esi,%eax,2)
40f33a:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f33d:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
40f340:	0f b7 c0             	movzwl %ax,%eax
40f343:	f7 d8                	neg    %eax
40f345:	1b c0                	sbb    %eax,%eax
40f347:	23 c1                	and    %ecx,%eax
40f349:	50                   	push   %eax
40f34a:	56                   	push   %esi
40f34b:	ff 15 20 91 41 00    	call   *0x419120
40f351:	85 c0                	test   %eax,%eax
40f353:	75 1f                	jne    0x40f374
40f355:	e8 d5 b3 ff ff       	call   0x40a72f
40f35a:	56                   	push   %esi
40f35b:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40f361:	e8 39 b4 ff ff       	call   0x40a79f
40f366:	83 cb ff             	or     $0xffffffff,%ebx
40f369:	59                   	pop    %ecx
40f36a:	57                   	push   %edi
40f36b:	e8 2f b4 ff ff       	call   0x40a79f
40f370:	8b c3                	mov    %ebx,%eax
40f372:	eb 25                	jmp    0x40f399
40f374:	56                   	push   %esi
40f375:	e8 25 b4 ff ff       	call   0x40a79f
40f37a:	59                   	pop    %ecx
40f37b:	57                   	push   %edi
40f37c:	e8 1e b4 ff ff       	call   0x40a79f
40f381:	33 c0                	xor    %eax,%eax
40f383:	eb 14                	jmp    0x40f399
40f385:	e8 a5 b3 ff ff       	call   0x40a72f
40f38a:	56                   	push   %esi
40f38b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f391:	e8 09 b4 ff ff       	call   0x40a79f
40f396:	83 c8 ff             	or     $0xffffffff,%eax
40f399:	59                   	pop    %ecx
40f39a:	5f                   	pop    %edi
40f39b:	5e                   	pop    %esi
40f39c:	5b                   	pop    %ebx
40f39d:	c9                   	leave
40f39e:	c3                   	ret
40f39f:	53                   	push   %ebx
40f3a0:	53                   	push   %ebx
40f3a1:	53                   	push   %ebx
40f3a2:	53                   	push   %ebx
40f3a3:	53                   	push   %ebx
40f3a4:	e8 4d 81 ff ff       	call   0x4074f6
40f3a9:	cc                   	int3
40f3aa:	8b ff                	mov    %edi,%edi
40f3ac:	55                   	push   %ebp
40f3ad:	8b ec                	mov    %esp,%ebp
40f3af:	51                   	push   %ecx
40f3b0:	51                   	push   %ecx
40f3b1:	57                   	push   %edi
40f3b2:	8b 7d 08             	mov    0x8(%ebp),%edi
40f3b5:	85 ff                	test   %edi,%edi
40f3b7:	75 05                	jne    0x40f3be
40f3b9:	33 c0                	xor    %eax,%eax
40f3bb:	5f                   	pop    %edi
40f3bc:	c9                   	leave
40f3bd:	c3                   	ret
40f3be:	33 d2                	xor    %edx,%edx
40f3c0:	8b c7                	mov    %edi,%eax
40f3c2:	8b ca                	mov    %edx,%ecx
40f3c4:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f3c7:	39 17                	cmp    %edx,(%edi)
40f3c9:	74 08                	je     0x40f3d3
40f3cb:	8d 40 04             	lea    0x4(%eax),%eax
40f3ce:	41                   	inc    %ecx
40f3cf:	39 10                	cmp    %edx,(%eax)
40f3d1:	75 f8                	jne    0x40f3cb
40f3d3:	56                   	push   %esi
40f3d4:	8d 41 01             	lea    0x1(%ecx),%eax
40f3d7:	6a 04                	push   $0x4
40f3d9:	50                   	push   %eax
40f3da:	e8 63 b3 ff ff       	call   0x40a742
40f3df:	8b f0                	mov    %eax,%esi
40f3e1:	59                   	pop    %ecx
40f3e2:	59                   	pop    %ecx
40f3e3:	85 f6                	test   %esi,%esi
40f3e5:	74 6f                	je     0x40f456
40f3e7:	8b 0f                	mov    (%edi),%ecx
40f3e9:	85 c9                	test   %ecx,%ecx
40f3eb:	74 58                	je     0x40f445
40f3ed:	53                   	push   %ebx
40f3ee:	8b de                	mov    %esi,%ebx
40f3f0:	2b df                	sub    %edi,%ebx
40f3f2:	8d 51 02             	lea    0x2(%ecx),%edx
40f3f5:	66 8b 01             	mov    (%ecx),%ax
40f3f8:	83 c1 02             	add    $0x2,%ecx
40f3fb:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40f3ff:	75 f4                	jne    0x40f3f5
40f401:	2b ca                	sub    %edx,%ecx
40f403:	d1 f9                	sar    $1,%ecx
40f405:	6a 02                	push   $0x2
40f407:	8d 41 01             	lea    0x1(%ecx),%eax
40f40a:	50                   	push   %eax
40f40b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f40e:	e8 2f b3 ff ff       	call   0x40a742
40f413:	89 04 3b             	mov    %eax,(%ebx,%edi,1)
40f416:	33 c0                	xor    %eax,%eax
40f418:	50                   	push   %eax
40f419:	e8 81 b3 ff ff       	call   0x40a79f
40f41e:	83 c4 0c             	add    $0xc,%esp
40f421:	83 3c 3b 00          	cmpl   $0x0,(%ebx,%edi,1)
40f425:	74 2f                	je     0x40f456
40f427:	ff 37                	push   (%edi)
40f429:	ff 75 f8             	push   -0x8(%ebp)
40f42c:	ff 34 3b             	push   (%ebx,%edi,1)
40f42f:	e8 b7 eb ff ff       	call   0x40dfeb
40f434:	83 c4 0c             	add    $0xc,%esp
40f437:	85 c0                	test   %eax,%eax
40f439:	75 20                	jne    0x40f45b
40f43b:	83 c7 04             	add    $0x4,%edi
40f43e:	8b 0f                	mov    (%edi),%ecx
40f440:	85 c9                	test   %ecx,%ecx
40f442:	75 ae                	jne    0x40f3f2
40f444:	5b                   	pop    %ebx
40f445:	33 c0                	xor    %eax,%eax
40f447:	50                   	push   %eax
40f448:	e8 52 b3 ff ff       	call   0x40a79f
40f44d:	59                   	pop    %ecx
40f44e:	8b c6                	mov    %esi,%eax
40f450:	5e                   	pop    %esi
40f451:	e9 65 ff ff ff       	jmp    0x40f3bb
40f456:	e8 cf b0 ff ff       	call   0x40a52a
40f45b:	33 c0                	xor    %eax,%eax
40f45d:	50                   	push   %eax
40f45e:	50                   	push   %eax
40f45f:	50                   	push   %eax
40f460:	50                   	push   %eax
40f461:	50                   	push   %eax
40f462:	e8 8f 80 ff ff       	call   0x4074f6
40f467:	cc                   	int3
40f468:	a1 68 20 42 00       	mov    0x422068,%eax
40f46d:	3b 05 6c 20 42 00    	cmp    0x42206c,%eax
40f473:	75 0c                	jne    0x40f481
40f475:	50                   	push   %eax
40f476:	e8 2f ff ff ff       	call   0x40f3aa
40f47b:	59                   	pop    %ecx
40f47c:	a3 68 20 42 00       	mov    %eax,0x422068
40f481:	c3                   	ret
40f482:	8b ff                	mov    %edi,%edi
40f484:	55                   	push   %ebp
40f485:	8b ec                	mov    %esp,%ebp
40f487:	53                   	push   %ebx
40f488:	56                   	push   %esi
40f489:	57                   	push   %edi
40f48a:	8b 3d 68 20 42 00    	mov    0x422068,%edi
40f490:	8b f7                	mov    %edi,%esi
40f492:	8b 07                	mov    (%edi),%eax
40f494:	85 c0                	test   %eax,%eax
40f496:	74 2d                	je     0x40f4c5
40f498:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40f49b:	53                   	push   %ebx
40f49c:	50                   	push   %eax
40f49d:	ff 75 08             	push   0x8(%ebp)
40f4a0:	e8 b2 59 00 00       	call   0x414e57
40f4a5:	83 c4 0c             	add    $0xc,%esp
40f4a8:	85 c0                	test   %eax,%eax
40f4aa:	75 10                	jne    0x40f4bc
40f4ac:	8b 06                	mov    (%esi),%eax
40f4ae:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
40f4b2:	83 f8 3d             	cmp    $0x3d,%eax
40f4b5:	74 1c                	je     0x40f4d3
40f4b7:	66 85 c0             	test   %ax,%ax
40f4ba:	74 17                	je     0x40f4d3
40f4bc:	83 c6 04             	add    $0x4,%esi
40f4bf:	8b 06                	mov    (%esi),%eax
40f4c1:	85 c0                	test   %eax,%eax
40f4c3:	75 d6                	jne    0x40f49b
40f4c5:	2b f7                	sub    %edi,%esi
40f4c7:	c1 fe 02             	sar    $0x2,%esi
40f4ca:	f7 de                	neg    %esi
40f4cc:	5f                   	pop    %edi
40f4cd:	8b c6                	mov    %esi,%eax
40f4cf:	5e                   	pop    %esi
40f4d0:	5b                   	pop    %ebx
40f4d1:	5d                   	pop    %ebp
40f4d2:	c3                   	ret
40f4d3:	2b f7                	sub    %edi,%esi
40f4d5:	c1 fe 02             	sar    $0x2,%esi
40f4d8:	eb f2                	jmp    0x40f4cc
40f4da:	8b ff                	mov    %edi,%edi
40f4dc:	55                   	push   %ebp
40f4dd:	8b ec                	mov    %esp,%ebp
40f4df:	5d                   	pop    %ebp
40f4e0:	e9 3a fc ff ff       	jmp    0x40f11f
40f4e5:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
40f4eb:	8b 40 30             	mov    0x30(%eax),%eax
40f4ee:	8b 40 68             	mov    0x68(%eax),%eax
40f4f1:	c1 e8 08             	shr    $0x8,%eax
40f4f4:	24 01                	and    $0x1,%al
40f4f6:	c3                   	ret
40f4f7:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
40f4fd:	8b 40 30             	mov    0x30(%eax),%eax
40f500:	8b 40 10             	mov    0x10(%eax),%eax
40f503:	8b 40 08             	mov    0x8(%eax),%eax
40f506:	c1 e8 1f             	shr    $0x1f,%eax