40d285:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40d289:	e8 5f a6 ff ff       	call   0x4078ed
40d28e:	80 7f 18 00          	cmpb   $0x0,0x18(%edi)
40d292:	8b 7d ac             	mov    -0x54(%ebp),%edi
40d295:	0f 85 d4 00 00 00    	jne    0x40d36f
40d29b:	8b 75 b0             	mov    -0x50(%ebp),%esi
40d29e:	2b f7                	sub    %edi,%esi
40d2a0:	d1 fe                	sar    $1,%esi
40d2a2:	53                   	push   %ebx
40d2a3:	68 bc 21 40 00       	push   $0x4021bc
40d2a8:	ff 15 94 21 41 00    	call   *0x412194
40d2ae:	59                   	pop    %ecx
40d2af:	33 db                	xor    %ebx,%ebx
40d2b1:	59                   	pop    %ecx
40d2b2:	85 f6                	test   %esi,%esi
40d2b4:	74 08                	je     0x40d2be
40d2b6:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40d2bc:	76 05                	jbe    0x40d2c3
40d2be:	bb 57 00 07 80       	mov    $0x80070057,%ebx
40d2c3:	85 db                	test   %ebx,%ebx
40d2c5:	78 6d                	js     0x40d334
40d2c7:	33 db                	xor    %ebx,%ebx
40d2c9:	89 75 e8             	mov    %esi,-0x18(%ebp)
40d2cc:	21 5d ec             	and    %ebx,-0x14(%ebp)
40d2cf:	89 7d f0             	mov    %edi,-0x10(%ebp)
40d2d2:	83 fe 01             	cmp    $0x1,%esi
40d2d5:	75 07                	jne    0x40d2de
40d2d7:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
40d2dc:	eb 5a                	jmp    0x40d338
40d2de:	76 4b                	jbe    0x40d32b
40d2e0:	6a 00                	push   $0x0
40d2e2:	e8 36 18 00 00       	call   0x40eb1d
40d2e7:	50                   	push   %eax
40d2e8:	ff 15 98 21 41 00    	call   *0x412198
40d2ee:	59                   	pop    %ecx
40d2ef:	59                   	pop    %ecx
40d2f0:	0f b7 c8             	movzwl %ax,%ecx
40d2f3:	b8 ff ff 00 00       	mov    $0xffff,%eax
40d2f8:	66 3b c8             	cmp    %ax,%cx
40d2fb:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d2fe:	74 1f                	je     0x40d31f
40d300:	83 f9 0a             	cmp    $0xa,%ecx
40d303:	74 28                	je     0x40d32d
40d305:	66 89 08             	mov    %cx,(%eax)
40d308:	83 c0 02             	add    $0x2,%eax
40d30b:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40d30e:	49                   	dec    %ecx
40d30f:	89 45 f0             	mov    %eax,-0x10(%ebp)
40d312:	ff 45 ec             	incl   -0x14(%ebp)
40d315:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d318:	83 f9 01             	cmp    $0x1,%ecx
40d31b:	77 c3                	ja     0x40d2e0
40d31d:	eb 0e                	jmp    0x40d32d
40d31f:	39 5d ec             	cmp    %ebx,-0x14(%ebp)
40d322:	75 09                	jne    0x40d32d
40d324:	bb 26 00 07 80       	mov    $0x80070026,%ebx
40d329:	eb 02                	jmp    0x40d32d
40d32b:	8b c7                	mov    %edi,%eax
40d32d:	33 c9                	xor    %ecx,%ecx
40d32f:	66 89 08             	mov    %cx,(%eax)
40d332:	eb 09                	jmp    0x40d33d
40d334:	85 f6                	test   %esi,%esi
40d336:	74 05                	je     0x40d33d
40d338:	33 c0                	xor    %eax,%eax
40d33a:	66 89 07             	mov    %ax,(%edi)
40d33d:	85 db                	test   %ebx,%ebx
40d33f:	0f 88 b1 00 00 00    	js     0x40d3f6
40d345:	ff 75 b8             	push   -0x48(%ebp)
40d348:	57                   	push   %edi
40d349:	ff 15 a0 21 41 00    	call   *0x4121a0
40d34f:	59                   	pop    %ecx
40d350:	59                   	pop    %ecx
40d351:	85 c0                	test   %eax,%eax
40d353:	74 18                	je     0x40d36d
40d355:	ff 75 c4             	push   -0x3c(%ebp)
40d358:	57                   	push   %edi
40d359:	ff 15 a0 21 41 00    	call   *0x4121a0
40d35f:	59                   	pop    %ecx
40d360:	59                   	pop    %ecx
40d361:	85 c0                	test   %eax,%eax
40d363:	74 48                	je     0x40d3ad
40d365:	8b 5d d0             	mov    -0x30(%ebp),%ebx
40d368:	e9 35 ff ff ff       	jmp    0x40d2a2
40d36d:	33 f6                	xor    %esi,%esi
40d36f:	ff 15 04 20 41 00    	call   *0x412004
40d375:	85 c0                	test   %eax,%eax
40d377:	75 0d                	jne    0x40d386
40d379:	ff 15 70 20 41 00    	call   *0x412070
40d37f:	6a 32                	push   $0x32
40d381:	5a                   	pop    %edx
40d382:	8b c8                	mov    %eax,%ecx
40d384:	eb 75                	jmp    0x40d3fb
40d386:	56                   	push   %esi
40d387:	ff 15 b0 20 41 00    	call   *0x4120b0
40d38d:	56                   	push   %esi
40d38e:	6a 39                	push   $0x39
40d390:	8d 55 dc             	lea    -0x24(%ebp),%edx
40d393:	8b c8                	mov    %eax,%ecx
40d395:	e8 0f 05 00 00       	call   0x40d8a9
40d39a:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40d39d:	53                   	push   %ebx
40d39e:	68 bc 21 40 00       	push   $0x4021bc
40d3a3:	ff 15 94 21 41 00    	call   *0x412194
40d3a9:	59                   	pop    %ecx
40d3aa:	59                   	pop    %ecx
40d3ab:	eb 03                	jmp    0x40d3b0
40d3ad:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40d3b0:	85 ff                	test   %edi,%edi
40d3b2:	74 08                	je     0x40d3bc
40d3b4:	57                   	push   %edi
40d3b5:	ff 15 e4 21 41 00    	call   *0x4121e4
40d3bb:	59                   	pop    %ecx
40d3bc:	8b 45 d0             	mov    -0x30(%ebp),%eax
40d3bf:	85 c0                	test   %eax,%eax
40d3c1:	74 08                	je     0x40d3cb
40d3c3:	50                   	push   %eax
40d3c4:	ff 15 e4 21 41 00    	call   *0x4121e4
40d3ca:	59                   	pop    %ecx
40d3cb:	ff 75 c4             	push   -0x3c(%ebp)
40d3ce:	ff 15 e4 21 41 00    	call   *0x4121e4
40d3d4:	ff 75 b8             	push   -0x48(%ebp)
40d3d7:	ff 15 e4 21 41 00    	call   *0x4121e4
40d3dd:	59                   	pop    %ecx
40d3de:	59                   	pop    %ecx
40d3df:	85 db                	test   %ebx,%ebx
40d3e1:	74 08                	je     0x40d3eb
40d3e3:	53                   	push   %ebx
40d3e4:	ff 15 e4 21 41 00    	call   *0x4121e4
40d3ea:	59                   	pop    %ecx
40d3eb:	e8 2c 12 00 00       	call   0x40e61c
40d3f0:	c3                   	ret
40d3f1:	e8 54 99 ff ff       	call   0x406d4a
40d3f6:	6a 32                	push   $0x32
40d3f8:	5a                   	pop    %edx
40d3f9:	8b cb                	mov    %ebx,%ecx
40d3fb:	e8 e3 a1 ff ff       	call   0x4075e3
40d400:	cc                   	int3
40d401:	8b ff                	mov    %edi,%edi
40d403:	55                   	push   %ebp
40d404:	8b ec                	mov    %esp,%ebp
40d406:	8b 45 0c             	mov    0xc(%ebp),%eax
40d409:	33 d2                	xor    %edx,%edx
40d40b:	83 49 1c ff          	orl    $0xffffffff,0x1c(%ecx)
40d40f:	89 41 08             	mov    %eax,0x8(%ecx)
40d412:	8b 45 08             	mov    0x8(%ebp),%eax
40d415:	89 41 18             	mov    %eax,0x18(%ecx)
40d418:	8b 45 10             	mov    0x10(%ebp),%eax
40d41b:	89 41 20             	mov    %eax,0x20(%ecx)
40d41e:	8b c1                	mov    %ecx,%eax
40d420:	88 51 04             	mov    %dl,0x4(%ecx)
40d423:	89 51 0c             	mov    %edx,0xc(%ecx)
40d426:	89 51 10             	mov    %edx,0x10(%ecx)
40d429:	89 51 14             	mov    %edx,0x14(%ecx)
40d42c:	c7 01 e4 15 40 00    	movl   $0x4015e4,(%ecx)
40d432:	5d                   	pop    %ebp
40d433:	c2 0c 00             	ret    $0xc
40d436:	cc                   	int3
40d437:	cc                   	int3
40d438:	cc                   	int3
40d439:	cc                   	int3
40d43a:	cc                   	int3
40d43b:	cc                   	int3
40d43c:	cc                   	int3
40d43d:	cc                   	int3
40d43e:	cc                   	int3
40d43f:	cc                   	int3
40d440:	ff 71 0c             	push   0xc(%ecx)
40d443:	c7 01 e4 15 40 00    	movl   $0x4015e4,(%ecx)
40d449:	ff 15 c4 21 41 00    	call   *0x4121c4
40d44f:	59                   	pop    %ecx
40d450:	c3                   	ret
40d451:	cc                   	int3
40d452:	cc                   	int3
40d453:	cc                   	int3
40d454:	cc                   	int3
40d455:	cc                   	int3
40d456:	cc                   	int3
40d457:	cc                   	int3
40d458:	cc                   	int3
40d459:	cc                   	int3
40d45a:	cc                   	int3
40d45b:	cc                   	int3
40d45c:	cc                   	int3
40d45d:	cc                   	int3
40d45e:	cc                   	int3
40d45f:	cc                   	int3
40d460:	8b 41 18             	mov    0x18(%ecx),%eax
40d463:	c3                   	ret
40d464:	cc                   	int3
40d465:	cc                   	int3
40d466:	cc                   	int3
40d467:	cc                   	int3
40d468:	cc                   	int3
40d469:	cc                   	int3
40d46a:	cc                   	int3
40d46b:	cc                   	int3
40d46c:	cc                   	int3
40d46d:	cc                   	int3
40d46e:	cc                   	int3
40d46f:	cc                   	int3
40d470:	8b 41 10             	mov    0x10(%ecx),%eax
40d473:	c3                   	ret
40d474:	cc                   	int3
40d475:	cc                   	int3
40d476:	cc                   	int3
40d477:	cc                   	int3
40d478:	cc                   	int3
40d479:	cc                   	int3
40d47a:	cc                   	int3
40d47b:	cc                   	int3
40d47c:	cc                   	int3
40d47d:	cc                   	int3
40d47e:	cc                   	int3
40d47f:	cc                   	int3
40d480:	8b 41 14             	mov    0x14(%ecx),%eax
40d483:	c3                   	ret
40d484:	cc                   	int3
40d485:	cc                   	int3
40d486:	cc                   	int3
40d487:	cc                   	int3
40d488:	cc                   	int3
40d489:	cc                   	int3
40d48a:	cc                   	int3
40d48b:	cc                   	int3
40d48c:	cc                   	int3
40d48d:	cc                   	int3
40d48e:	cc                   	int3
40d48f:	cc                   	int3
40d490:	8b 41 20             	mov    0x20(%ecx),%eax
40d493:	c3                   	ret
40d494:	cc                   	int3
40d495:	cc                   	int3
40d496:	cc                   	int3
40d497:	cc                   	int3
40d498:	cc                   	int3
40d499:	cc                   	int3
40d49a:	cc                   	int3
40d49b:	cc                   	int3
40d49c:	cc                   	int3
40d49d:	cc                   	int3
40d49e:	cc                   	int3
40d49f:	cc                   	int3
40d4a0:	8b 41 08             	mov    0x8(%ecx),%eax
40d4a3:	c3                   	ret
40d4a4:	cc                   	int3
40d4a5:	cc                   	int3
40d4a6:	cc                   	int3
40d4a7:	cc                   	int3
40d4a8:	cc                   	int3
40d4a9:	cc                   	int3
40d4aa:	cc                   	int3
40d4ab:	cc                   	int3
40d4ac:	cc                   	int3
40d4ad:	cc                   	int3
40d4ae:	cc                   	int3
40d4af:	cc                   	int3
40d4b0:	8b 41 1c             	mov    0x1c(%ecx),%eax
40d4b3:	c3                   	ret
40d4b4:	cc                   	int3
40d4b5:	cc                   	int3
40d4b6:	cc                   	int3
40d4b7:	cc                   	int3
40d4b8:	cc                   	int3
40d4b9:	cc                   	int3
40d4ba:	cc                   	int3
40d4bb:	cc                   	int3
40d4bc:	cc                   	int3
40d4bd:	cc                   	int3
40d4be:	cc                   	int3
40d4bf:	cc                   	int3
40d4c0:	8b 41 0c             	mov    0xc(%ecx),%eax
40d4c3:	c3                   	ret
40d4c4:	cc                   	int3
40d4c5:	cc                   	int3
40d4c6:	cc                   	int3
40d4c7:	cc                   	int3
40d4c8:	cc                   	int3
40d4c9:	cc                   	int3
40d4ca:	cc                   	int3
40d4cb:	cc                   	int3
40d4cc:	cc                   	int3
40d4cd:	cc                   	int3
40d4ce:	cc                   	int3
40d4cf:	cc                   	int3
40d4d0:	8b ff                	mov    %edi,%edi
40d4d2:	55                   	push   %ebp
40d4d3:	8b ec                	mov    %esp,%ebp
40d4d5:	56                   	push   %esi
40d4d6:	8b f1                	mov    %ecx,%esi
40d4d8:	ff 76 0c             	push   0xc(%esi)
40d4db:	c7 06 e4 15 40 00    	movl   $0x4015e4,(%esi)
40d4e1:	ff 15 c4 21 41 00    	call   *0x4121c4
40d4e7:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40d4eb:	59                   	pop    %ecx
40d4ec:	74 08                	je     0x40d4f6
40d4ee:	56                   	push   %esi
40d4ef:	ff 15 e4 21 41 00    	call   *0x4121e4
40d4f5:	59                   	pop    %ecx
40d4f6:	8b c6                	mov    %esi,%eax
40d4f8:	5e                   	pop    %esi
40d4f9:	5d                   	pop    %ebp
40d4fa:	c2 04 00             	ret    $0x4
40d4fd:	8b ff                	mov    %edi,%edi
40d4ff:	55                   	push   %ebp
40d500:	8b ec                	mov    %esp,%ebp
40d502:	53                   	push   %ebx
40d503:	56                   	push   %esi
40d504:	8b d9                	mov    %ecx,%ebx
40d506:	33 c9                	xor    %ecx,%ecx
40d508:	8b f1                	mov    %ecx,%esi
40d50a:	57                   	push   %edi
40d50b:	bf 57 00 07 80       	mov    $0x80070057,%edi
40d510:	85 d2                	test   %edx,%edx
40d512:	74 08                	je     0x40d51c
40d514:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40d51a:	76 02                	jbe    0x40d51e
40d51c:	8b f7                	mov    %edi,%esi
40d51e:	85 f6                	test   %esi,%esi
40d520:	78 62                	js     0x40d584
40d522:	8b f1                	mov    %ecx,%esi
40d524:	85 d2                	test   %edx,%edx
40d526:	75 17                	jne    0x40d53f
40d528:	8b 45 14             	mov    0x14(%ebp),%eax
40d52b:	66 39 08             	cmp    %cx,(%eax)
40d52e:	74 49                	je     0x40d579
40d530:	85 db                	test   %ebx,%ebx
40d532:	75 04                	jne    0x40d538
40d534:	8b f7                	mov    %edi,%esi
40d536:	eb 55                	jmp    0x40d58d
40d538:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40d53d:	eb 3a                	jmp    0x40d579
40d53f:	ff 75 18             	push   0x18(%ebp)
40d542:	8d 7a ff             	lea    -0x1(%edx),%edi
40d545:	ff 75 14             	push   0x14(%ebp)
40d548:	57                   	push   %edi
40d549:	53                   	push   %ebx
40d54a:	ff 15 9c 21 41 00    	call   *0x41219c
40d550:	83 c4 10             	add    $0x10,%esp
40d553:	b9 7a 00 07 80       	mov    $0x8007007a,%ecx
40d558:	85 c0                	test   %eax,%eax
40d55a:	78 0a                	js     0x40d566
40d55c:	3b c7                	cmp    %edi,%eax
40d55e:	77 06                	ja     0x40d566
40d560:	74 06                	je     0x40d568
40d562:	8b f8                	mov    %eax,%edi
40d564:	eb 08                	jmp    0x40d56e
40d566:	8b f1                	mov    %ecx,%esi
40d568:	33 c0                	xor    %eax,%eax
40d56a:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40d56e:	8d 1c 7b             	lea    (%ebx,%edi,2),%ebx