410365:	2b f7                	sub    %edi,%esi
410367:	c1 fe 02             	sar    $0x2,%esi
41036a:	f7 de                	neg    %esi
41036c:	5f                   	pop    %edi
41036d:	8b c6                	mov    %esi,%eax
41036f:	5e                   	pop    %esi
410370:	5b                   	pop    %ebx
410371:	5d                   	pop    %ebp
410372:	c3                   	ret
410373:	2b f7                	sub    %edi,%esi
410375:	c1 fe 02             	sar    $0x2,%esi
410378:	eb f2                	jmp    0x41036c
41037a:	8b ff                	mov    %edi,%edi
41037c:	55                   	push   %ebp
41037d:	8b ec                	mov    %esp,%ebp
41037f:	53                   	push   %ebx
410380:	56                   	push   %esi
410381:	57                   	push   %edi
410382:	8b 3d 50 41 42 00    	mov    0x424150,%edi
410388:	8b f7                	mov    %edi,%esi
41038a:	83 3f 00             	cmpl   $0x0,(%edi)
41038d:	74 2d                	je     0x4103bc
41038f:	8b 5d 0c             	mov    0xc(%ebp),%ebx
410392:	53                   	push   %ebx
410393:	ff 36                	push   (%esi)
410395:	ff 75 08             	push   0x8(%ebp)
410398:	e8 b2 52 00 00       	call   0x41564f
41039d:	83 c4 0c             	add    $0xc,%esp
4103a0:	85 c0                	test   %eax,%eax
4103a2:	75 10                	jne    0x4103b4
4103a4:	8b 06                	mov    (%esi),%eax
4103a6:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
4103aa:	83 f8 3d             	cmp    $0x3d,%eax
4103ad:	74 1b                	je     0x4103ca
4103af:	66 85 c0             	test   %ax,%ax
4103b2:	74 16                	je     0x4103ca
4103b4:	83 c6 04             	add    $0x4,%esi
4103b7:	83 3e 00             	cmpl   $0x0,(%esi)
4103ba:	75 d6                	jne    0x410392
4103bc:	2b f7                	sub    %edi,%esi
4103be:	c1 fe 02             	sar    $0x2,%esi
4103c1:	f7 de                	neg    %esi
4103c3:	5f                   	pop    %edi
4103c4:	8b c6                	mov    %esi,%eax
4103c6:	5e                   	pop    %esi
4103c7:	5b                   	pop    %ebx
4103c8:	5d                   	pop    %ebp
4103c9:	c3                   	ret
4103ca:	2b f7                	sub    %edi,%esi
4103cc:	c1 fe 02             	sar    $0x2,%esi
4103cf:	eb f2                	jmp    0x4103c3
4103d1:	8b ff                	mov    %edi,%edi
4103d3:	55                   	push   %ebp
4103d4:	8b ec                	mov    %esp,%ebp
4103d6:	5d                   	pop    %ebp
4103d7:	e9 63 f9 ff ff       	jmp    0x40fd3f
4103dc:	8b ff                	mov    %edi,%edi
4103de:	55                   	push   %ebp
4103df:	8b ec                	mov    %esp,%ebp
4103e1:	5d                   	pop    %ebp
4103e2:	e9 93 fb ff ff       	jmp    0x40ff7a
4103e7:	ff 15 84 b0 41 00    	call   *0x41b084
4103ed:	85 c0                	test   %eax,%eax
4103ef:	a3 c4 46 42 00       	mov    %eax,0x4246c4
4103f4:	0f 95 c0             	setne  %al
4103f7:	c3                   	ret
4103f8:	83 25 c4 46 42 00 00 	andl   $0x0,0x4246c4
4103ff:	b0 01                	mov    $0x1,%al
410401:	c3                   	ret
410402:	8b ff                	mov    %edi,%edi
410404:	55                   	push   %ebp
410405:	8b ec                	mov    %esp,%ebp
410407:	51                   	push   %ecx
410408:	a1 0c 30 42 00       	mov    0x42300c,%eax
41040d:	33 c5                	xor    %ebp,%eax
41040f:	89 45 fc             	mov    %eax,-0x4(%ebp)
410412:	57                   	push   %edi
410413:	8b 7d 08             	mov    0x8(%ebp),%edi
410416:	3b 7d 0c             	cmp    0xc(%ebp),%edi
410419:	75 04                	jne    0x41041f
41041b:	b0 01                	mov    $0x1,%al
41041d:	eb 57                	jmp    0x410476
41041f:	56                   	push   %esi
410420:	8b f7                	mov    %edi,%esi
410422:	53                   	push   %ebx
410423:	8b 1e                	mov    (%esi),%ebx
410425:	85 db                	test   %ebx,%ebx
410427:	74 0e                	je     0x410437
410429:	8b cb                	mov    %ebx,%ecx
41042b:	ff 15 a8 b1 41 00    	call   *0x41b1a8
410431:	ff d3                	call   *%ebx
410433:	84 c0                	test   %al,%al
410435:	74 08                	je     0x41043f
410437:	83 c6 08             	add    $0x8,%esi
41043a:	3b 75 0c             	cmp    0xc(%ebp),%esi
41043d:	75 e4                	jne    0x410423
41043f:	3b 75 0c             	cmp    0xc(%ebp),%esi
410442:	75 04                	jne    0x410448
410444:	b0 01                	mov    $0x1,%al
410446:	eb 2c                	jmp    0x410474
410448:	3b f7                	cmp    %edi,%esi
41044a:	74 26                	je     0x410472
41044c:	83 c6 fc             	add    $0xfffffffc,%esi
41044f:	83 7e fc 00          	cmpl   $0x0,-0x4(%esi)
410453:	74 13                	je     0x410468
410455:	8b 1e                	mov    (%esi),%ebx
410457:	85 db                	test   %ebx,%ebx
410459:	74 0d                	je     0x410468
41045b:	6a 00                	push   $0x0
41045d:	8b cb                	mov    %ebx,%ecx
41045f:	ff 15 a8 b1 41 00    	call   *0x41b1a8
410465:	ff d3                	call   *%ebx
410467:	59                   	pop    %ecx
410468:	83 ee 08             	sub    $0x8,%esi
41046b:	8d 46 04             	lea    0x4(%esi),%eax
41046e:	3b c7                	cmp    %edi,%eax
410470:	75 dd                	jne    0x41044f
410472:	32 c0                	xor    %al,%al
410474:	5b                   	pop    %ebx
410475:	5e                   	pop    %esi
410476:	8b 4d fc             	mov    -0x4(%ebp),%ecx
410479:	33 cd                	xor    %ebp,%ecx
41047b:	5f                   	pop    %edi
41047c:	e8 d5 2a ff ff       	call   0x402f56
410481:	8b e5                	mov    %ebp,%esp
410483:	5d                   	pop    %ebp
410484:	c3                   	ret
410485:	8b ff                	mov    %edi,%edi
410487:	55                   	push   %ebp
410488:	8b ec                	mov    %esp,%ebp
41048a:	51                   	push   %ecx
41048b:	a1 0c 30 42 00       	mov    0x42300c,%eax
410490:	33 c5                	xor    %ebp,%eax
410492:	89 45 fc             	mov    %eax,-0x4(%ebp)
410495:	56                   	push   %esi
410496:	8b 75 0c             	mov    0xc(%ebp),%esi
410499:	39 75 08             	cmp    %esi,0x8(%ebp)
41049c:	74 23                	je     0x4104c1
41049e:	83 c6 fc             	add    $0xfffffffc,%esi
4104a1:	57                   	push   %edi
4104a2:	8b 3e                	mov    (%esi),%edi
4104a4:	85 ff                	test   %edi,%edi
4104a6:	74 0d                	je     0x4104b5
4104a8:	6a 00                	push   $0x0
4104aa:	8b cf                	mov    %edi,%ecx
4104ac:	ff 15 a8 b1 41 00    	call   *0x41b1a8
4104b2:	ff d7                	call   *%edi
4104b4:	59                   	pop    %ecx
4104b5:	83 ee 08             	sub    $0x8,%esi
4104b8:	8d 46 04             	lea    0x4(%esi),%eax
4104bb:	3b 45 08             	cmp    0x8(%ebp),%eax
4104be:	75 e2                	jne    0x4104a2
4104c0:	5f                   	pop    %edi
4104c1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4104c4:	b0 01                	mov    $0x1,%al
4104c6:	33 cd                	xor    %ebp,%ecx
4104c8:	5e                   	pop    %esi
4104c9:	e8 88 2a ff ff       	call   0x402f56
4104ce:	8b e5                	mov    %ebp,%esp
4104d0:	5d                   	pop    %ebp
4104d1:	c3                   	ret
4104d2:	6a 0c                	push   $0xc
4104d4:	68 c8 1e 42 00       	push   $0x421ec8
4104d9:	e8 72 36 ff ff       	call   0x403b50
4104de:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
4104e2:	8b 45 08             	mov    0x8(%ebp),%eax
4104e5:	ff 30                	push   (%eax)
4104e7:	e8 b9 e9 ff ff       	call   0x40eea5
4104ec:	59                   	pop    %ecx
4104ed:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4104f1:	8b 35 0c 30 42 00    	mov    0x42300c,%esi
4104f7:	8b ce                	mov    %esi,%ecx
4104f9:	83 e1 1f             	and    $0x1f,%ecx
4104fc:	33 35 d0 46 42 00    	xor    0x4246d0,%esi
410502:	d3 ce                	ror    %cl,%esi
410504:	89 75 e4             	mov    %esi,-0x1c(%ebp)
410507:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
41050e:	e8 0d 00 00 00       	call   0x410520
410513:	8b c6                	mov    %esi,%eax
410515:	e8 7c 36 ff ff       	call   0x403b96
41051a:	c2 0c 00             	ret    $0xc
41051d:	8b 75 e4             	mov    -0x1c(%ebp),%esi
410520:	8b 4d 10             	mov    0x10(%ebp),%ecx
410523:	ff 31                	push   (%ecx)
410525:	e8 c3 e9 ff ff       	call   0x40eeed
41052a:	59                   	pop    %ecx
41052b:	c3                   	ret
41052c:	8b ff                	mov    %edi,%edi
41052e:	55                   	push   %ebp
41052f:	8b ec                	mov    %esp,%ebp
410531:	83 ec 0c             	sub    $0xc,%esp
410534:	8b 45 08             	mov    0x8(%ebp),%eax
410537:	8d 4d ff             	lea    -0x1(%ebp),%ecx
41053a:	89 45 f8             	mov    %eax,-0x8(%ebp)
41053d:	89 45 f4             	mov    %eax,-0xc(%ebp)
410540:	8d 45 f8             	lea    -0x8(%ebp),%eax
410543:	50                   	push   %eax
410544:	ff 75 0c             	push   0xc(%ebp)
410547:	8d 45 f4             	lea    -0xc(%ebp),%eax
41054a:	50                   	push   %eax
41054b:	e8 82 ff ff ff       	call   0x4104d2
410550:	8b e5                	mov    %ebp,%esp
410552:	5d                   	pop    %ebp
410553:	c3                   	ret
410554:	8b ff                	mov    %edi,%edi
410556:	55                   	push   %ebp
410557:	8b ec                	mov    %esp,%ebp
410559:	8b 45 08             	mov    0x8(%ebp),%eax
41055c:	48                   	dec    %eax
41055d:	83 e8 01             	sub    $0x1,%eax
410560:	74 2d                	je     0x41058f
410562:	83 e8 04             	sub    $0x4,%eax
410565:	74 13                	je     0x41057a
410567:	83 e8 09             	sub    $0x9,%eax
41056a:	74 1c                	je     0x410588
41056c:	83 e8 06             	sub    $0x6,%eax
41056f:	74 10                	je     0x410581
410571:	83 e8 01             	sub    $0x1,%eax
410574:	74 04                	je     0x41057a
410576:	33 c0                	xor    %eax,%eax
410578:	5d                   	pop    %ebp
410579:	c3                   	ret
41057a:	b8 d0 46 42 00       	mov    $0x4246d0,%eax
41057f:	5d                   	pop    %ebp
410580:	c3                   	ret
410581:	b8 cc 46 42 00       	mov    $0x4246cc,%eax
410586:	5d                   	pop    %ebp
410587:	c3                   	ret
410588:	b8 d4 46 42 00       	mov    $0x4246d4,%eax
41058d:	5d                   	pop    %ebp
41058e:	c3                   	ret
41058f:	b8 c8 46 42 00       	mov    $0x4246c8,%eax
410594:	5d                   	pop    %ebp
410595:	c3                   	ret
410596:	8b ff                	mov    %edi,%edi
410598:	55                   	push   %ebp
410599:	8b ec                	mov    %esp,%ebp
41059b:	8d 41 04             	lea    0x4(%ecx),%eax
41059e:	8b d0                	mov    %eax,%edx
4105a0:	2b d1                	sub    %ecx,%edx
4105a2:	83 c2 03             	add    $0x3,%edx
4105a5:	56                   	push   %esi
4105a6:	33 f6                	xor    %esi,%esi
4105a8:	c1 ea 02             	shr    $0x2,%edx
4105ab:	3b c1                	cmp    %ecx,%eax
4105ad:	1b c0                	sbb    %eax,%eax
4105af:	f7 d0                	not    %eax
4105b1:	23 c2                	and    %edx,%eax
4105b3:	74 0d                	je     0x4105c2
4105b5:	8b 55 08             	mov    0x8(%ebp),%edx
4105b8:	46                   	inc    %esi
4105b9:	89 11                	mov    %edx,(%ecx)
4105bb:	8d 49 04             	lea    0x4(%ecx),%ecx
4105be:	3b f0                	cmp    %eax,%esi
4105c0:	75 f6                	jne    0x4105b8
4105c2:	5e                   	pop    %esi
4105c3:	5d                   	pop    %ebp
4105c4:	c2 04 00             	ret    $0x4
4105c7:	8b ff                	mov    %edi,%edi
4105c9:	55                   	push   %ebp
4105ca:	8b ec                	mov    %esp,%ebp
4105cc:	6b 0d 28 bf 41 00 0c 	imul   $0xc,0x41bf28,%ecx
4105d3:	8b 45 0c             	mov    0xc(%ebp),%eax
4105d6:	03 c8                	add    %eax,%ecx
4105d8:	3b c1                	cmp    %ecx,%eax
4105da:	74 0f                	je     0x4105eb
4105dc:	8b 55 08             	mov    0x8(%ebp),%edx
4105df:	39 50 04             	cmp    %edx,0x4(%eax)
4105e2:	74 09                	je     0x4105ed
4105e4:	83 c0 0c             	add    $0xc,%eax
4105e7:	3b c1                	cmp    %ecx,%eax
4105e9:	75 f4                	jne    0x4105df
4105eb:	33 c0                	xor    %eax,%eax
4105ed:	5d                   	pop    %ebp
4105ee:	c3                   	ret
4105ef:	8b ff                	mov    %edi,%edi
4105f1:	55                   	push   %ebp
4105f2:	8b ec                	mov    %esp,%ebp
4105f4:	51                   	push   %ecx
4105f5:	8d 45 ff             	lea    -0x1(%ebp),%eax
4105f8:	50                   	push   %eax
4105f9:	6a 03                	push   $0x3
4105fb:	e8 2c ff ff ff       	call   0x41052c
410600:	59                   	pop    %ecx
410601:	59                   	pop    %ecx
410602:	8b e5                	mov    %ebp,%esp
410604:	5d                   	pop    %ebp
410605:	c3                   	ret
410606:	8b ff                	mov    %edi,%edi
410608:	55                   	push   %ebp
410609:	8b ec                	mov    %esp,%ebp
41060b:	ff 75 08             	push   0x8(%ebp)
41060e:	b9 c8 46 42 00       	mov    $0x4246c8,%ecx
410613:	e8 7e ff ff ff       	call   0x410596
410618:	ff 75 08             	push   0x8(%ebp)
41061b:	b9 cc 46 42 00       	mov    $0x4246cc,%ecx
410620:	e8 71 ff ff ff       	call   0x410596
410625:	ff 75 08             	push   0x8(%ebp)
410628:	b9 d0 46 42 00       	mov    $0x4246d0,%ecx
41062d:	e8 64 ff ff ff       	call   0x410596
410632:	ff 75 08             	push   0x8(%ebp)
410635:	b9 d4 46 42 00       	mov    $0x4246d4,%ecx
41063a:	e8 57 ff ff ff       	call   0x410596
41063f:	5d                   	pop    %ebp
410640:	c3                   	ret
410641:	e8 dc a3 ff ff       	call   0x40aa22
410646:	83 c0 08             	add    $0x8,%eax
410649:	c3                   	ret
41064a:	6a 2c                	push   $0x2c
41064c:	68 a8 1e 42 00       	push   $0x421ea8
410651:	e8 8a 7c 00 00       	call   0x4182e0
410656:	33 db                	xor    %ebx,%ebx
410658:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
41065b:	21 5d cc             	and    %ebx,-0x34(%ebp)
41065e:	b1 01                	mov    $0x1,%cl
410660:	88 4d e3             	mov    %cl,-0x1d(%ebp)
410663:	8b 75 08             	mov    0x8(%ebp),%esi
410666:	6a 08                	push   $0x8
410668:	5f                   	pop    %edi
410669:	3b f7                	cmp    %edi,%esi
41066b:	7f 18                	jg     0x410685
41066d:	74 35                	je     0x4106a4
41066f:	8d 46 ff             	lea    -0x1(%esi),%eax
410672:	83 e8 01             	sub    $0x1,%eax
410675:	74 22                	je     0x410699
410677:	48                   	dec    %eax
410678:	83 e8 01             	sub    $0x1,%eax
41067b:	74 27                	je     0x4106a4
41067d:	48                   	dec    %eax
41067e:	83 e8 01             	sub    $0x1,%eax
410681:	75 4c                	jne    0x4106cf
410683:	eb 14                	jmp    0x410699
410685:	83 fe 0b             	cmp    $0xb,%esi
410688:	74 1a                	je     0x4106a4
41068a:	83 fe 0f             	cmp    $0xf,%esi
41068d:	74 0a                	je     0x410699
41068f:	83 fe 14             	cmp    $0x14,%esi
410692:	7e 3b                	jle    0x4106cf
410694:	83 fe 16             	cmp    $0x16,%esi
410697:	7f 36                	jg     0x4106cf
410699:	56                   	push   %esi
41069a:	e8 b5 fe ff ff       	call   0x410554
41069f:	83 c4 04             	add    $0x4,%esp
4106a2:	eb 45                	jmp    0x4106e9
4106a4:	e8 fd a3 ff ff       	call   0x40aaa6
4106a9:	8b d8                	mov    %eax,%ebx
4106ab:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4106ae:	85 db                	test   %ebx,%ebx
4106b0:	75 08                	jne    0x4106ba
4106b2:	83 c8 ff             	or     $0xffffffff,%eax