4102d2:	e8 99 b9 00 00       	call   0x41bc70
4102d7:	83 c4 0c             	add    $0xc,%esp
4102da:	ff 75 14             	push   0x14(%ebp)
4102dd:	8d 4e 1c             	lea    0x1c(%esi),%ecx
4102e0:	51                   	push   %ecx
4102e1:	8d 46 5c             	lea    0x5c(%esi),%eax
4102e4:	50                   	push   %eax
4102e5:	56                   	push   %esi
4102e6:	e8 10 fc ff ff       	call   0x40fefb
4102eb:	8d 47 3f             	lea    0x3f(%edi),%eax
4102ee:	3b c3                	cmp    %ebx,%eax
4102f0:	73 27                	jae    0x410319
4102f2:	89 45 10             	mov    %eax,0x10(%ebp)
4102f5:	ff 75 14             	push   0x14(%ebp)
4102f8:	8b 4d 10             	mov    0x10(%ebp),%ecx
4102fb:	8b 45 0c             	mov    0xc(%ebp),%eax
4102fe:	8d 44 08 c1          	lea    -0x3f(%eax,%ecx,1),%eax
410302:	50                   	push   %eax
410303:	8d 46 5c             	lea    0x5c(%esi),%eax
410306:	50                   	push   %eax
410307:	56                   	push   %esi
410308:	e8 ee fb ff ff       	call   0x40fefb
41030d:	83 45 10 40          	addl   $0x40,0x10(%ebp)
410311:	83 c7 40             	add    $0x40,%edi
410314:	39 5d 10             	cmp    %ebx,0x10(%ebp)
410317:	72 dc                	jb     0x4102f5
410319:	33 c0                	xor    %eax,%eax
41031b:	eb 02                	jmp    0x41031f
41031d:	33 ff                	xor    %edi,%edi
41031f:	3b df                	cmp    %edi,%ebx
410321:	76 16                	jbe    0x410339
410323:	8b 4d 0c             	mov    0xc(%ebp),%ecx
410326:	2b df                	sub    %edi,%ebx
410328:	53                   	push   %ebx
410329:	03 f9                	add    %ecx,%edi
41032b:	8d 44 30 1c          	lea    0x1c(%eax,%esi,1),%eax
41032f:	57                   	push   %edi
410330:	50                   	push   %eax
410331:	e8 3a b9 00 00       	call   0x41bc70
410336:	83 c4 0c             	add    $0xc,%esp
410339:	5f                   	pop    %edi
41033a:	5e                   	pop    %esi
41033b:	5b                   	pop    %ebx
41033c:	5d                   	pop    %ebp
41033d:	c2 10 00             	ret    $0x10
410340:	55                   	push   %ebp
410341:	8b ec                	mov    %esp,%ebp
410343:	83 ec 10             	sub    $0x10,%esp
410346:	56                   	push   %esi
410347:	8b 75 08             	mov    0x8(%ebp),%esi
41034a:	33 c0                	xor    %eax,%eax
41034c:	8b d0                	mov    %eax,%edx
41034e:	83 e2 03             	and    $0x3,%edx
410351:	6a 03                	push   $0x3
410353:	59                   	pop    %ecx
410354:	2b ca                	sub    %edx,%ecx
410356:	c1 e1 03             	shl    $0x3,%ecx
410359:	83 f8 04             	cmp    $0x4,%eax
41035c:	1b d2                	sbb    %edx,%edx
41035e:	f7 da                	neg    %edx
410360:	8b 54 96 14          	mov    0x14(%esi,%edx,4),%edx
410364:	d3 ea                	shr    %cl,%edx
410366:	40                   	inc    %eax
410367:	88 54 05 ef          	mov    %dl,-0x11(%ebp,%eax,1)
41036b:	83 f8 08             	cmp    $0x8,%eax
41036e:	72 dc                	jb     0x41034c
410370:	53                   	push   %ebx
410371:	57                   	push   %edi
410372:	ff 75 10             	push   0x10(%ebp)
410375:	89 45 fc             	mov    %eax,-0x4(%ebp)
410378:	6a 01                	push   $0x1
41037a:	8d 45 0b             	lea    0xb(%ebp),%eax
41037d:	50                   	push   %eax
41037e:	56                   	push   %esi
41037f:	c6 45 0b 80          	movb   $0x80,0xb(%ebp)
410383:	e8 04 ff ff ff       	call   0x41028c
410388:	8d 7e 14             	lea    0x14(%esi),%edi
41038b:	bb c0 01 00 00       	mov    $0x1c0,%ebx
410390:	eb 10                	jmp    0x4103a2
410392:	6a 01                	push   $0x1
410394:	8d 45 0b             	lea    0xb(%ebp),%eax
410397:	50                   	push   %eax
410398:	56                   	push   %esi
410399:	c6 45 0b 00          	movb   $0x0,0xb(%ebp)
41039d:	e8 ea fe ff ff       	call   0x41028c
4103a2:	8b 07                	mov    (%edi),%eax
4103a4:	ff 75 10             	push   0x10(%ebp)
4103a7:	25 f8 01 00 00       	and    $0x1f8,%eax
4103ac:	3b c3                	cmp    %ebx,%eax
4103ae:	75 e2                	jne    0x410392
4103b0:	6a 08                	push   $0x8
4103b2:	8d 45 f0             	lea    -0x10(%ebp),%eax
4103b5:	50                   	push   %eax
4103b6:	56                   	push   %esi
4103b7:	e8 d0 fe ff ff       	call   0x41028c
4103bc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4103c0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4103c3:	8b 55 0c             	mov    0xc(%ebp),%edx
4103c6:	c1 e0 02             	shl    $0x2,%eax
4103c9:	8b 0c 30             	mov    (%eax,%esi,1),%ecx
4103cc:	89 0c 10             	mov    %ecx,(%eax,%edx,1)
4103cf:	ff 45 fc             	incl   -0x4(%ebp)
4103d2:	83 7d fc 05          	cmpl   $0x5,-0x4(%ebp)
4103d6:	72 e8                	jb     0x4103c0
4103d8:	6a 04                	push   $0x4
4103da:	8d 45 fc             	lea    -0x4(%ebp),%eax
4103dd:	50                   	push   %eax
4103de:	e8 e5 c9 ff ff       	call   0x40cdc8
4103e3:	6a 04                	push   $0x4
4103e5:	8d 45 f8             	lea    -0x8(%ebp),%eax
4103e8:	50                   	push   %eax
4103e9:	e8 da c9 ff ff       	call   0x40cdc8
4103ee:	6a 40                	push   $0x40
4103f0:	8d 46 1c             	lea    0x1c(%esi),%eax
4103f3:	50                   	push   %eax
4103f4:	e8 cf c9 ff ff       	call   0x40cdc8
4103f9:	6a 14                	push   $0x14
4103fb:	56                   	push   %esi
4103fc:	e8 c7 c9 ff ff       	call   0x40cdc8
410401:	6a 08                	push   $0x8
410403:	57                   	push   %edi
410404:	e8 bf c9 ff ff       	call   0x40cdc8
410409:	6a 08                	push   $0x8
41040b:	8d 45 f0             	lea    -0x10(%ebp),%eax
41040e:	50                   	push   %eax
41040f:	e8 b4 c9 ff ff       	call   0x40cdc8
410414:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
410418:	5f                   	pop    %edi
410419:	5b                   	pop    %ebx
41041a:	74 10                	je     0x41042c
41041c:	6a 40                	push   $0x40
41041e:	6a 00                	push   $0x0
410420:	83 c6 5c             	add    $0x5c,%esi
410423:	56                   	push   %esi
410424:	e8 d7 9d 00 00       	call   0x41a200
410429:	83 c4 0c             	add    $0xc,%esp
41042c:	5e                   	pop    %esi
41042d:	c9                   	leave
41042e:	c2 0c 00             	ret    $0xc
410431:	8b 44 24 04          	mov    0x4(%esp),%eax
410435:	83 60 20 00          	andl   $0x0,0x20(%eax)
410439:	83 60 24 00          	andl   $0x0,0x24(%eax)
41043d:	c7 00 67 e6 09 6a    	movl   $0x6a09e667,(%eax)
410443:	c7 40 04 85 ae 67 bb 	movl   $0xbb67ae85,0x4(%eax)
41044a:	c7 40 08 72 f3 6e 3c 	movl   $0x3c6ef372,0x8(%eax)
410451:	c7 40 0c 3a f5 4f a5 	movl   $0xa54ff53a,0xc(%eax)
410458:	c7 40 10 7f 52 0e 51 	movl   $0x510e527f,0x10(%eax)
41045f:	c7 40 14 8c 68 05 9b 	movl   $0x9b05688c,0x14(%eax)
410466:	c7 40 18 ab d9 83 1f 	movl   $0x1f83d9ab,0x18(%eax)
41046d:	c7 40 1c 19 cd e0 5b 	movl   $0x5be0cd19,0x1c(%eax)
410474:	c2 04 00             	ret    $0x4
410477:	55                   	push   %ebp
410478:	8b ec                	mov    %esp,%ebp
41047a:	81 ec 24 01 00 00    	sub    $0x124,%esp
410480:	85 f6                	test   %esi,%esi
410482:	75 1e                	jne    0x4104a2
410484:	6a 20                	push   $0x20
410486:	8d 45 dc             	lea    -0x24(%ebp),%eax
410489:	50                   	push   %eax
41048a:	e8 39 c9 ff ff       	call   0x40cdc8
41048f:	68 00 01 00 00       	push   $0x100
410494:	8d 85 dc fe ff ff    	lea    -0x124(%ebp),%eax
41049a:	50                   	push   %eax
41049b:	e8 28 c9 ff ff       	call   0x40cdc8
4104a0:	c9                   	leave
4104a1:	c3                   	ret
4104a2:	8b 46 28             	mov    0x28(%esi),%eax
4104a5:	53                   	push   %ebx
4104a6:	57                   	push   %edi
4104a7:	ff 30                	push   (%eax)
4104a9:	e8 03 c8 00 00       	call   0x41ccb1
4104ae:	89 85 dc fe ff ff    	mov    %eax,-0x124(%ebp)
4104b4:	8b 46 28             	mov    0x28(%esi),%eax
4104b7:	83 c0 04             	add    $0x4,%eax
4104ba:	ff 30                	push   (%eax)
4104bc:	e8 f0 c7 00 00       	call   0x41ccb1
4104c1:	89 85 e0 fe ff ff    	mov    %eax,-0x120(%ebp)
4104c7:	8b 46 28             	mov    0x28(%esi),%eax
4104ca:	83 c0 08             	add    $0x8,%eax
4104cd:	ff 30                	push   (%eax)
4104cf:	e8 dd c7 00 00       	call   0x41ccb1
4104d4:	89 85 e4 fe ff ff    	mov    %eax,-0x11c(%ebp)
4104da:	8b 46 28             	mov    0x28(%esi),%eax
4104dd:	83 c0 0c             	add    $0xc,%eax
4104e0:	ff 30                	push   (%eax)
4104e2:	e8 ca c7 00 00       	call   0x41ccb1
4104e7:	89 85 e8 fe ff ff    	mov    %eax,-0x118(%ebp)
4104ed:	8b 46 28             	mov    0x28(%esi),%eax
4104f0:	83 c0 10             	add    $0x10,%eax
4104f3:	ff 30                	push   (%eax)
4104f5:	e8 b7 c7 00 00       	call   0x41ccb1
4104fa:	89 85 ec fe ff ff    	mov    %eax,-0x114(%ebp)
410500:	8b 46 28             	mov    0x28(%esi),%eax
410503:	83 c0 14             	add    $0x14,%eax
410506:	ff 30                	push   (%eax)
410508:	e8 a4 c7 00 00       	call   0x41ccb1
41050d:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
410513:	8b 46 28             	mov    0x28(%esi),%eax
410516:	83 c0 18             	add    $0x18,%eax
410519:	ff 30                	push   (%eax)
41051b:	e8 91 c7 00 00       	call   0x41ccb1
410520:	89 85 f4 fe ff ff    	mov    %eax,-0x10c(%ebp)
410526:	8b 46 28             	mov    0x28(%esi),%eax
410529:	83 c0 1c             	add    $0x1c,%eax
41052c:	ff 30                	push   (%eax)
41052e:	e8 7e c7 00 00       	call   0x41ccb1
410533:	89 85 f8 fe ff ff    	mov    %eax,-0x108(%ebp)
410539:	8b 46 28             	mov    0x28(%esi),%eax
41053c:	83 c0 20             	add    $0x20,%eax
41053f:	ff 30                	push   (%eax)
410541:	e8 6b c7 00 00       	call   0x41ccb1
410546:	89 85 fc fe ff ff    	mov    %eax,-0x104(%ebp)
41054c:	8b 46 28             	mov    0x28(%esi),%eax
41054f:	83 c0 24             	add    $0x24,%eax
410552:	ff 30                	push   (%eax)
410554:	e8 58 c7 00 00       	call   0x41ccb1
410559:	89 85 00 ff ff ff    	mov    %eax,-0x100(%ebp)
41055f:	8b 46 28             	mov    0x28(%esi),%eax
410562:	83 c0 28             	add    $0x28,%eax
410565:	ff 30                	push   (%eax)
410567:	e8 45 c7 00 00       	call   0x41ccb1
41056c:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
410572:	8b 46 28             	mov    0x28(%esi),%eax
410575:	83 c0 2c             	add    $0x2c,%eax
410578:	ff 30                	push   (%eax)
41057a:	e8 32 c7 00 00       	call   0x41ccb1
41057f:	89 85 08 ff ff ff    	mov    %eax,-0xf8(%ebp)
410585:	8b 46 28             	mov    0x28(%esi),%eax
410588:	6a 30                	push   $0x30
41058a:	5f                   	pop    %edi
41058b:	03 c7                	add    %edi,%eax
41058d:	ff 30                	push   (%eax)
41058f:	e8 1d c7 00 00       	call   0x41ccb1
410594:	89 85 0c ff ff ff    	mov    %eax,-0xf4(%ebp)
41059a:	8b 46 28             	mov    0x28(%esi),%eax
41059d:	83 c0 34             	add    $0x34,%eax
4105a0:	ff 30                	push   (%eax)
4105a2:	e8 0a c7 00 00       	call   0x41ccb1
4105a7:	89 85 10 ff ff ff    	mov    %eax,-0xf0(%ebp)
4105ad:	8b 46 28             	mov    0x28(%esi),%eax
4105b0:	83 c0 38             	add    $0x38,%eax
4105b3:	ff 30                	push   (%eax)
4105b5:	e8 f7 c6 00 00       	call   0x41ccb1
4105ba:	89 85 14 ff ff ff    	mov    %eax,-0xec(%ebp)
4105c0:	8b 46 28             	mov    0x28(%esi),%eax
4105c3:	83 c0 3c             	add    $0x3c,%eax
4105c6:	ff 30                	push   (%eax)
4105c8:	e8 e4 c6 00 00       	call   0x41ccb1
4105cd:	89 85 18 ff ff ff    	mov    %eax,-0xe8(%ebp)
4105d3:	83 c4 40             	add    $0x40,%esp
4105d6:	8d 85 14 ff ff ff    	lea    -0xec(%ebp),%eax
4105dc:	89 7d fc             	mov    %edi,-0x4(%ebp)
4105df:	8b 48 cc             	mov    -0x34(%eax),%ecx
4105e2:	8b 10                	mov    (%eax),%edx
4105e4:	8b f9                	mov    %ecx,%edi
4105e6:	c1 c7 0e             	rol    $0xe,%edi
4105e9:	8b d9                	mov    %ecx,%ebx
4105eb:	c1 e9 03             	shr    $0x3,%ecx
4105ee:	c1 cb 07             	ror    $0x7,%ebx
4105f1:	33 fb                	xor    %ebx,%edi
4105f3:	33 f9                	xor    %ecx,%edi
4105f5:	8b ca                	mov    %edx,%ecx
4105f7:	c1 c1 0f             	rol    $0xf,%ecx
4105fa:	8b da                	mov    %edx,%ebx
4105fc:	c1 c3 0d             	rol    $0xd,%ebx
4105ff:	33 cb                	xor    %ebx,%ecx
410601:	c1 ea 0a             	shr    $0xa,%edx
410604:	33 ca                	xor    %edx,%ecx
410606:	03 f9                	add    %ecx,%edi
410608:	03 78 c8             	add    -0x38(%eax),%edi
41060b:	83 c0 04             	add    $0x4,%eax
41060e:	03 78 e8             	add    -0x18(%eax),%edi
410611:	ff 4d fc             	decl   -0x4(%ebp)
410614:	89 78 04             	mov    %edi,0x4(%eax)
410617:	75 c6                	jne    0x4105df
410619:	8b 46 04             	mov    0x4(%esi),%eax
41061c:	8b 3e                	mov    (%esi),%edi
41061e:	8b 56 10             	mov    0x10(%esi),%edx
410621:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
410625:	89 45 e0             	mov    %eax,-0x20(%ebp)
410628:	8b 46 08             	mov    0x8(%esi),%eax
41062b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
41062e:	8b 46 0c             	mov    0xc(%esi),%eax
410631:	89 45 e8             	mov    %eax,-0x18(%ebp)
410634:	8b 46 14             	mov    0x14(%esi),%eax
410637:	89 45 f0             	mov    %eax,-0x10(%ebp)
41063a:	8b 46 18             	mov    0x18(%esi),%eax
41063d:	89 45 f4             	mov    %eax,-0xc(%ebp)
410640:	8b 46 1c             	mov    0x1c(%esi),%eax
410643:	89 7d dc             	mov    %edi,-0x24(%ebp)
410646:	89 45 f8             	mov    %eax,-0x8(%ebp)
410649:	8b 5d f0             	mov    -0x10(%ebp),%ebx
41064c:	8b c2                	mov    %edx,%eax
41064e:	c1 c8 0b             	ror    $0xb,%eax
410651:	8b ca                	mov    %edx,%ecx
410653:	c1 c1 07             	rol    $0x7,%ecx
410656:	33 c1                	xor    %ecx,%eax
410658:	23 da                	and    %edx,%ebx
41065a:	8b ca                	mov    %edx,%ecx
41065c:	c1 c9 06             	ror    $0x6,%ecx
41065f:	33 c1                	xor    %ecx,%eax
410661:	8b ca                	mov    %edx,%ecx
410663:	f7 d1                	not    %ecx
410665:	23 4d f4             	and    -0xc(%ebp),%ecx
410668:	33 cb                	xor    %ebx,%ecx
41066a:	03 c1                	add    %ecx,%eax
41066c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41066f:	03 81 90 ab 42 00    	add    0x42ab90(%ecx),%eax
410675:	83 45 fc 04          	addl   $0x4,-0x4(%ebp)
410679:	03 84 0d dc fe ff ff 	add    -0x124(%ebp,%ecx,1),%eax
410680:	8b 4d f4             	mov    -0xc(%ebp),%ecx
410683:	03 45 f8             	add    -0x8(%ebp),%eax
410686:	89 4d f8             	mov    %ecx,-0x8(%ebp)
410689:	8b 4d f0             	mov    -0x10(%ebp),%ecx
41068c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
41068f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
410692:	8b df                	mov    %edi,%ebx
410694:	89 55 f0             	mov    %edx,-0x10(%ebp)
410697:	8d 14 08             	lea    (%eax,%ecx,1),%edx
41069a:	8b cf                	mov    %edi,%ecx
41069c:	c1 c9 0d             	ror    $0xd,%ecx
41069f:	c1 c3 0a             	rol    $0xa,%ebx
4106a2:	33 cb                	xor    %ebx,%ecx
4106a4:	8b df                	mov    %edi,%ebx
4106a6:	c1 cb 02             	ror    $0x2,%ebx
4106a9:	33 cb                	xor    %ebx,%ecx
4106ab:	8b 5d e0             	mov    -0x20(%ebp),%ebx
4106ae:	33 df                	xor    %edi,%ebx
4106b0:	23 5d e4             	and    -0x1c(%ebp),%ebx
4106b3:	8b 7d e0             	mov    -0x20(%ebp),%edi
4106b6:	23 7d dc             	and    -0x24(%ebp),%edi
4106b9:	33 df                	xor    %edi,%ebx
4106bb:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4106be:	03 cb                	add    %ebx,%ecx
4106c0:	81 7d fc 00 01 00 00 	cmpl   $0x100,-0x4(%ebp)
4106c7:	8b 5d e0             	mov    -0x20(%ebp),%ebx
4106ca:	89 7d e8             	mov    %edi,-0x18(%ebp)
4106cd:	8b 7d dc             	mov    -0x24(%ebp),%edi
4106d0:	89 7d e0             	mov    %edi,-0x20(%ebp)
4106d3:	8d 3c 01             	lea    (%ecx,%eax,1),%edi
4106d6:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4106d9:	89 7d dc             	mov    %edi,-0x24(%ebp)
4106dc:	0f 82 67 ff ff ff    	jb     0x410649
4106e2:	8b 06                	mov    (%esi),%eax
4106e4:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4106e7:	03 c7                	add    %edi,%eax
4106e9:	89 06                	mov    %eax,(%esi)
4106eb:	8b 46 04             	mov    0x4(%esi),%eax
4106ee:	03 c1                	add    %ecx,%eax
4106f0:	8b 4d e8             	mov    -0x18(%ebp),%ecx