405309:	8b 86 c4 00 00 00    	mov    0xc4(%esi),%eax
40530f:	2d fe 00 00 00       	sub    $0xfe,%eax
405314:	50                   	push   %eax
405315:	e8 89 fa ff ff       	call   0x404da3
40531a:	8b 86 cc 00 00 00    	mov    0xcc(%esi),%eax
405320:	bf 80 00 00 00       	mov    $0x80,%edi
405325:	2b c7                	sub    %edi,%eax
405327:	50                   	push   %eax
405328:	e8 76 fa ff ff       	call   0x404da3
40532d:	8b 86 d0 00 00 00    	mov    0xd0(%esi),%eax
405333:	2b c7                	sub    %edi,%eax
405335:	50                   	push   %eax
405336:	e8 68 fa ff ff       	call   0x404da3
40533b:	ff b6 c0 00 00 00    	push   0xc0(%esi)
405341:	e8 5d fa ff ff       	call   0x404da3
405346:	83 c4 10             	add    $0x10,%esp
405349:	8d be d4 00 00 00    	lea    0xd4(%esi),%edi
40534f:	8b 07                	mov    (%edi),%eax
405351:	3d 60 fb 41 00       	cmp    $0x41fb60,%eax
405356:	74 17                	je     0x40536f
405358:	39 98 b4 00 00 00    	cmp    %ebx,0xb4(%eax)
40535e:	75 0f                	jne    0x40536f
405360:	50                   	push   %eax
405361:	e8 41 28 00 00       	call   0x407ba7
405366:	ff 37                	push   (%edi)
405368:	e8 36 fa ff ff       	call   0x404da3
40536d:	59                   	pop    %ecx
40536e:	59                   	pop    %ecx
40536f:	8d 7e 50             	lea    0x50(%esi),%edi
405372:	c7 45 08 06 00 00 00 	movl   $0x6,0x8(%ebp)
405379:	81 7f f8 58 fa 41 00 	cmpl   $0x41fa58,-0x8(%edi)
405380:	74 11                	je     0x405393
405382:	8b 07                	mov    (%edi),%eax
405384:	3b c3                	cmp    %ebx,%eax
405386:	74 0b                	je     0x405393
405388:	39 18                	cmp    %ebx,(%eax)
40538a:	75 07                	jne    0x405393
40538c:	50                   	push   %eax
40538d:	e8 11 fa ff ff       	call   0x404da3
405392:	59                   	pop    %ecx
405393:	39 5f fc             	cmp    %ebx,-0x4(%edi)
405396:	74 12                	je     0x4053aa
405398:	8b 47 04             	mov    0x4(%edi),%eax
40539b:	3b c3                	cmp    %ebx,%eax
40539d:	74 0b                	je     0x4053aa
40539f:	39 18                	cmp    %ebx,(%eax)
4053a1:	75 07                	jne    0x4053aa
4053a3:	50                   	push   %eax
4053a4:	e8 fa f9 ff ff       	call   0x404da3
4053a9:	59                   	pop    %ecx
4053aa:	83 c7 10             	add    $0x10,%edi
4053ad:	ff 4d 08             	decl   0x8(%ebp)
4053b0:	75 c7                	jne    0x405379
4053b2:	56                   	push   %esi
4053b3:	e8 eb f9 ff ff       	call   0x404da3
4053b8:	59                   	pop    %ecx
4053b9:	5f                   	pop    %edi
4053ba:	5e                   	pop    %esi
4053bb:	5b                   	pop    %ebx
4053bc:	5d                   	pop    %ebp
4053bd:	c3                   	ret
4053be:	8b ff                	mov    %edi,%edi
4053c0:	55                   	push   %ebp
4053c1:	8b ec                	mov    %esp,%ebp
4053c3:	53                   	push   %ebx
4053c4:	56                   	push   %esi
4053c5:	8b 35 bc d0 41 00    	mov    0x41d0bc,%esi
4053cb:	57                   	push   %edi
4053cc:	8b 7d 08             	mov    0x8(%ebp),%edi
4053cf:	57                   	push   %edi
4053d0:	ff d6                	call   *%esi
4053d2:	8b 87 b0 00 00 00    	mov    0xb0(%edi),%eax
4053d8:	85 c0                	test   %eax,%eax
4053da:	74 03                	je     0x4053df
4053dc:	50                   	push   %eax
4053dd:	ff d6                	call   *%esi
4053df:	8b 87 b8 00 00 00    	mov    0xb8(%edi),%eax
4053e5:	85 c0                	test   %eax,%eax
4053e7:	74 03                	je     0x4053ec
4053e9:	50                   	push   %eax
4053ea:	ff d6                	call   *%esi
4053ec:	8b 87 b4 00 00 00    	mov    0xb4(%edi),%eax
4053f2:	85 c0                	test   %eax,%eax
4053f4:	74 03                	je     0x4053f9
4053f6:	50                   	push   %eax
4053f7:	ff d6                	call   *%esi
4053f9:	8b 87 c0 00 00 00    	mov    0xc0(%edi),%eax
4053ff:	85 c0                	test   %eax,%eax
405401:	74 03                	je     0x405406
405403:	50                   	push   %eax
405404:	ff d6                	call   *%esi
405406:	8d 5f 50             	lea    0x50(%edi),%ebx
405409:	c7 45 08 06 00 00 00 	movl   $0x6,0x8(%ebp)
405410:	81 7b f8 58 fa 41 00 	cmpl   $0x41fa58,-0x8(%ebx)
405417:	74 09                	je     0x405422
405419:	8b 03                	mov    (%ebx),%eax
40541b:	85 c0                	test   %eax,%eax
40541d:	74 03                	je     0x405422
40541f:	50                   	push   %eax
405420:	ff d6                	call   *%esi
405422:	83 7b fc 00          	cmpl   $0x0,-0x4(%ebx)
405426:	74 0a                	je     0x405432
405428:	8b 43 04             	mov    0x4(%ebx),%eax
40542b:	85 c0                	test   %eax,%eax
40542d:	74 03                	je     0x405432
40542f:	50                   	push   %eax
405430:	ff d6                	call   *%esi
405432:	83 c3 10             	add    $0x10,%ebx
405435:	ff 4d 08             	decl   0x8(%ebp)
405438:	75 d6                	jne    0x405410
40543a:	8b 87 d4 00 00 00    	mov    0xd4(%edi),%eax
405440:	05 b4 00 00 00       	add    $0xb4,%eax
405445:	50                   	push   %eax
405446:	ff d6                	call   *%esi
405448:	5f                   	pop    %edi
405449:	5e                   	pop    %esi
40544a:	5b                   	pop    %ebx
40544b:	5d                   	pop    %ebp
40544c:	c3                   	ret
40544d:	8b ff                	mov    %edi,%edi
40544f:	55                   	push   %ebp
405450:	8b ec                	mov    %esp,%ebp
405452:	57                   	push   %edi
405453:	8b 7d 08             	mov    0x8(%ebp),%edi
405456:	85 ff                	test   %edi,%edi
405458:	0f 84 83 00 00 00    	je     0x4054e1
40545e:	53                   	push   %ebx
40545f:	56                   	push   %esi
405460:	8b 35 4c d0 41 00    	mov    0x41d04c,%esi
405466:	57                   	push   %edi
405467:	ff d6                	call   *%esi
405469:	8b 87 b0 00 00 00    	mov    0xb0(%edi),%eax
40546f:	85 c0                	test   %eax,%eax
405471:	74 03                	je     0x405476
405473:	50                   	push   %eax
405474:	ff d6                	call   *%esi
405476:	8b 87 b8 00 00 00    	mov    0xb8(%edi),%eax
40547c:	85 c0                	test   %eax,%eax
40547e:	74 03                	je     0x405483
405480:	50                   	push   %eax
405481:	ff d6                	call   *%esi
405483:	8b 87 b4 00 00 00    	mov    0xb4(%edi),%eax
405489:	85 c0                	test   %eax,%eax
40548b:	74 03                	je     0x405490
40548d:	50                   	push   %eax
40548e:	ff d6                	call   *%esi
405490:	8b 87 c0 00 00 00    	mov    0xc0(%edi),%eax
405496:	85 c0                	test   %eax,%eax
405498:	74 03                	je     0x40549d
40549a:	50                   	push   %eax
40549b:	ff d6                	call   *%esi
40549d:	8d 5f 50             	lea    0x50(%edi),%ebx
4054a0:	c7 45 08 06 00 00 00 	movl   $0x6,0x8(%ebp)
4054a7:	81 7b f8 58 fa 41 00 	cmpl   $0x41fa58,-0x8(%ebx)
4054ae:	74 09                	je     0x4054b9
4054b0:	8b 03                	mov    (%ebx),%eax
4054b2:	85 c0                	test   %eax,%eax
4054b4:	74 03                	je     0x4054b9
4054b6:	50                   	push   %eax
4054b7:	ff d6                	call   *%esi
4054b9:	83 7b fc 00          	cmpl   $0x0,-0x4(%ebx)
4054bd:	74 0a                	je     0x4054c9
4054bf:	8b 43 04             	mov    0x4(%ebx),%eax
4054c2:	85 c0                	test   %eax,%eax
4054c4:	74 03                	je     0x4054c9
4054c6:	50                   	push   %eax
4054c7:	ff d6                	call   *%esi
4054c9:	83 c3 10             	add    $0x10,%ebx
4054cc:	ff 4d 08             	decl   0x8(%ebp)
4054cf:	75 d6                	jne    0x4054a7
4054d1:	8b 87 d4 00 00 00    	mov    0xd4(%edi),%eax
4054d7:	05 b4 00 00 00       	add    $0xb4,%eax
4054dc:	50                   	push   %eax
4054dd:	ff d6                	call   *%esi
4054df:	5e                   	pop    %esi
4054e0:	5b                   	pop    %ebx
4054e1:	8b c7                	mov    %edi,%eax
4054e3:	5f                   	pop    %edi
4054e4:	5d                   	pop    %ebp
4054e5:	c3                   	ret
4054e6:	85 ff                	test   %edi,%edi
4054e8:	74 37                	je     0x405521
4054ea:	85 c0                	test   %eax,%eax
4054ec:	74 33                	je     0x405521
4054ee:	56                   	push   %esi
4054ef:	8b 30                	mov    (%eax),%esi
4054f1:	3b f7                	cmp    %edi,%esi
4054f3:	74 28                	je     0x40551d
4054f5:	57                   	push   %edi
4054f6:	89 38                	mov    %edi,(%eax)
4054f8:	e8 c1 fe ff ff       	call   0x4053be
4054fd:	59                   	pop    %ecx
4054fe:	85 f6                	test   %esi,%esi
405500:	74 1b                	je     0x40551d
405502:	56                   	push   %esi
405503:	e8 45 ff ff ff       	call   0x40544d
405508:	83 3e 00             	cmpl   $0x0,(%esi)
40550b:	59                   	pop    %ecx
40550c:	75 0f                	jne    0x40551d
40550e:	81 fe 60 fa 41 00    	cmp    $0x41fa60,%esi
405514:	74 07                	je     0x40551d
405516:	56                   	push   %esi
405517:	e8 59 fd ff ff       	call   0x405275
40551c:	59                   	pop    %ecx
40551d:	8b c7                	mov    %edi,%eax
40551f:	5e                   	pop    %esi
405520:	c3                   	ret
405521:	33 c0                	xor    %eax,%eax
405523:	c3                   	ret
405524:	6a 0c                	push   $0xc
405526:	68 08 e8 41 00       	push   $0x41e808
40552b:	e8 50 d6 ff ff       	call   0x402b80
405530:	e8 45 d3 ff ff       	call   0x40287a
405535:	8b f0                	mov    %eax,%esi
405537:	a1 50 fb 41 00       	mov    0x41fb50,%eax
40553c:	85 46 70             	test   %eax,0x70(%esi)
40553f:	74 22                	je     0x405563
405541:	83 7e 6c 00          	cmpl   $0x0,0x6c(%esi)
405545:	74 1c                	je     0x405563
405547:	e8 2e d3 ff ff       	call   0x40287a
40554c:	8b 70 6c             	mov    0x6c(%eax),%esi
40554f:	85 f6                	test   %esi,%esi
405551:	75 08                	jne    0x40555b
405553:	6a 20                	push   $0x20
405555:	e8 a3 c2 ff ff       	call   0x4017fd
40555a:	59                   	pop    %ecx
40555b:	8b c6                	mov    %esi,%eax
40555d:	e8 63 d6 ff ff       	call   0x402bc5
405562:	c3                   	ret
405563:	6a 0c                	push   $0xc
405565:	e8 6d e5 ff ff       	call   0x403ad7
40556a:	59                   	pop    %ecx
40556b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40556f:	8d 46 6c             	lea    0x6c(%esi),%eax
405572:	8b 3d 38 fb 41 00    	mov    0x41fb38,%edi
405578:	e8 69 ff ff ff       	call   0x4054e6
40557d:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405580:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405587:	e8 02 00 00 00       	call   0x40558e
40558c:	eb c1                	jmp    0x40554f
40558e:	6a 0c                	push   $0xc
405590:	e8 68 e4 ff ff       	call   0x4039fd
405595:	59                   	pop    %ecx
405596:	8b 75 e4             	mov    -0x1c(%ebp),%esi
405599:	c3                   	ret
40559a:	8b ff                	mov    %edi,%edi
40559c:	55                   	push   %ebp
40559d:	8b ec                	mov    %esp,%ebp
40559f:	8b 0d 78 2d de 02    	mov    0x2de2d78,%ecx
4055a5:	a1 7c 2d de 02       	mov    0x2de2d7c,%eax
4055aa:	6b c9 14             	imul   $0x14,%ecx,%ecx
4055ad:	03 c8                	add    %eax,%ecx
4055af:	eb 11                	jmp    0x4055c2
4055b1:	8b 55 08             	mov    0x8(%ebp),%edx
4055b4:	2b 50 0c             	sub    0xc(%eax),%edx
4055b7:	81 fa 00 00 10 00    	cmp    $0x100000,%edx
4055bd:	72 09                	jb     0x4055c8
4055bf:	83 c0 14             	add    $0x14,%eax
4055c2:	3b c1                	cmp    %ecx,%eax
4055c4:	72 eb                	jb     0x4055b1
4055c6:	33 c0                	xor    %eax,%eax
4055c8:	5d                   	pop    %ebp
4055c9:	c3                   	ret
4055ca:	8b ff                	mov    %edi,%edi
4055cc:	55                   	push   %ebp
4055cd:	8b ec                	mov    %esp,%ebp
4055cf:	83 ec 10             	sub    $0x10,%esp
4055d2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4055d5:	8b 41 10             	mov    0x10(%ecx),%eax
4055d8:	56                   	push   %esi
4055d9:	8b 75 0c             	mov    0xc(%ebp),%esi
4055dc:	57                   	push   %edi
4055dd:	8b fe                	mov    %esi,%edi
4055df:	2b 79 0c             	sub    0xc(%ecx),%edi
4055e2:	83 c6 fc             	add    $0xfffffffc,%esi
4055e5:	c1 ef 0f             	shr    $0xf,%edi
4055e8:	8b cf                	mov    %edi,%ecx
4055ea:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
4055f0:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
4055f7:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4055fa:	8b 0e                	mov    (%esi),%ecx
4055fc:	49                   	dec    %ecx
4055fd:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405600:	f6 c1 01             	test   $0x1,%cl
405603:	0f 85 d3 02 00 00    	jne    0x4058dc
405609:	53                   	push   %ebx
40560a:	8d 1c 31             	lea    (%ecx,%esi,1),%ebx
40560d:	8b 13                	mov    (%ebx),%edx
40560f:	89 55 f4             	mov    %edx,-0xc(%ebp)
405612:	8b 56 fc             	mov    -0x4(%esi),%edx
405615:	89 55 f8             	mov    %edx,-0x8(%ebp)
405618:	8b 55 f4             	mov    -0xc(%ebp),%edx
40561b:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40561e:	f6 c2 01             	test   $0x1,%dl
405621:	75 74                	jne    0x405697
405623:	c1 fa 04             	sar    $0x4,%edx
405626:	4a                   	dec    %edx
405627:	83 fa 3f             	cmp    $0x3f,%edx
40562a:	76 03                	jbe    0x40562f
40562c:	6a 3f                	push   $0x3f
40562e:	5a                   	pop    %edx
40562f:	8b 4b 04             	mov    0x4(%ebx),%ecx
405632:	3b 4b 08             	cmp    0x8(%ebx),%ecx
405635:	75 42                	jne    0x405679
405637:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40563c:	83 fa 20             	cmp    $0x20,%edx
40563f:	73 19                	jae    0x40565a
405641:	8b ca                	mov    %edx,%ecx
405643:	d3 eb                	shr    %cl,%ebx
405645:	8d 4c 02 04          	lea    0x4(%edx,%eax,1),%ecx
405649:	f7 d3                	not    %ebx
40564b:	21 5c b8 44          	and    %ebx,0x44(%eax,%edi,4)
40564f:	fe 09                	decb   (%ecx)
405651:	75 23                	jne    0x405676
405653:	8b 4d 08             	mov    0x8(%ebp),%ecx
405656:	21 19                	and    %ebx,(%ecx)
405658:	eb 1c                	jmp    0x405676
40565a:	8d 4a e0             	lea    -0x20(%edx),%ecx
40565d:	d3 eb                	shr    %cl,%ebx
40565f:	8d 4c 02 04          	lea    0x4(%edx,%eax,1),%ecx
405663:	f7 d3                	not    %ebx
405665:	21 9c b8 c4 00 00 00 	and    %ebx,0xc4(%eax,%edi,4)
40566c:	fe 09                	decb   (%ecx)
40566e:	75 06                	jne    0x405676
405670:	8b 4d 08             	mov    0x8(%ebp),%ecx
405673:	21 59 04             	and    %ebx,0x4(%ecx)
405676:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405679:	8b 53 08             	mov    0x8(%ebx),%edx
40567c:	8b 5b 04             	mov    0x4(%ebx),%ebx
40567f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405682:	03 4d f4             	add    -0xc(%ebp),%ecx
405685:	89 5a 04             	mov    %ebx,0x4(%edx)
405688:	8b 55 0c             	mov    0xc(%ebp),%edx
40568b:	8b 5a 04             	mov    0x4(%edx),%ebx
40568e:	8b 52 08             	mov    0x8(%edx),%edx
405691:	89 53 08             	mov    %edx,0x8(%ebx)
405694:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405697:	8b d1                	mov    %ecx,%edx
405699:	c1 fa 04             	sar    $0x4,%edx
40569c:	4a                   	dec    %edx
40569d:	83 fa 3f             	cmp    $0x3f,%edx
4056a0:	76 03                	jbe    0x4056a5
4056a2:	6a 3f                	push   $0x3f
4056a4:	5a                   	pop    %edx
4056a5:	8b 5d f8             	mov    -0x8(%ebp),%ebx
4056a8:	83 e3 01             	and    $0x1,%ebx
4056ab:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4056ae:	0f 85 8f 00 00 00    	jne    0x405743
4056b4:	2b 75 f8             	sub    -0x8(%ebp),%esi
4056b7:	8b 5d f8             	mov    -0x8(%ebp),%ebx