40839f:	83 c4 18             	add    $0x18,%esp
4083a2:	85 c0                	test   %eax,%eax
4083a4:	74 1c                	je     0x4083c2
4083a6:	83 f8 16             	cmp    $0x16,%eax
4083a9:	74 05                	je     0x4083b0
4083ab:	83 f8 22             	cmp    $0x22,%eax
4083ae:	75 0a                	jne    0x4083ba
4083b0:	57                   	push   %edi
4083b1:	57                   	push   %edi
4083b2:	57                   	push   %edi
4083b3:	57                   	push   %edi
4083b4:	57                   	push   %edi
4083b5:	e9 56 ff ff ff       	jmp    0x408310
4083ba:	85 c0                	test   %eax,%eax
4083bc:	0f 85 65 ff ff ff    	jne    0x408327
4083c2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4083c5:	83 c0 04             	add    $0x4,%eax
4083c8:	50                   	push   %eax
4083c9:	e8 d4 06 00 00       	call   0x408aa2
4083ce:	59                   	pop    %ecx
4083cf:	8b f8                	mov    %eax,%edi
4083d1:	89 7d dc             	mov    %edi,-0x24(%ebp)
4083d4:	85 ff                	test   %edi,%edi
4083d6:	0f 84 4b ff ff ff    	je     0x408327
4083dc:	8d 5f 04             	lea    0x4(%edi),%ebx
4083df:	89 5d d8             	mov    %ebx,-0x28(%ebp)
4083e2:	8d 45 d0             	lea    -0x30(%ebp),%eax
4083e5:	50                   	push   %eax
4083e6:	6a ff                	push   $0xffffffff
4083e8:	ff 75 0c             	push   0xc(%ebp)
4083eb:	ff 75 e4             	push   -0x1c(%ebp)
4083ee:	53                   	push   %ebx
4083ef:	6a 00                	push   $0x0
4083f1:	e8 1b 75 00 00       	call   0x40f911
4083f6:	83 c4 18             	add    $0x18,%esp
4083f9:	85 c0                	test   %eax,%eax
4083fb:	74 1e                	je     0x40841b
4083fd:	83 f8 16             	cmp    $0x16,%eax
408400:	74 05                	je     0x408407
408402:	83 f8 22             	cmp    $0x22,%eax
408405:	75 0c                	jne    0x408413
408407:	33 c0                	xor    %eax,%eax
408409:	50                   	push   %eax
40840a:	50                   	push   %eax
40840b:	50                   	push   %eax
40840c:	50                   	push   %eax
40840d:	50                   	push   %eax
40840e:	e9 fd fe ff ff       	jmp    0x408310
408413:	85 c0                	test   %eax,%eax
408415:	0f 85 35 ff ff ff    	jne    0x408350
40841b:	8b 7d d0             	mov    -0x30(%ebp),%edi
40841e:	6a 0c                	push   $0xc
408420:	e8 82 00 00 00       	call   0x4084a7
408425:	59                   	pop    %ecx
408426:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40842a:	03 f6                	add    %esi,%esi
40842c:	8b 44 f7 18          	mov    0x18(%edi,%esi,8),%eax
408430:	85 c0                	test   %eax,%eax
408432:	74 15                	je     0x408449
408434:	50                   	push   %eax
408435:	ff 15 54 90 41 00    	call   *0x419054
40843b:	85 c0                	test   %eax,%eax
40843d:	75 0a                	jne    0x408449
40843f:	ff 74 f7 18          	push   0x18(%edi,%esi,8)
408443:	e8 d0 cc ff ff       	call   0x405118
408448:	59                   	pop    %ecx
408449:	8b 45 e0             	mov    -0x20(%ebp),%eax
40844c:	f6 40 70 02          	testb  $0x2,0x70(%eax)
408450:	75 26                	jne    0x408478
408452:	f6 05 0c 10 42 00 01 	testb  $0x1,0x42100c
408459:	75 1d                	jne    0x408478
40845b:	8b 44 f7 18          	mov    0x18(%edi,%esi,8),%eax
40845f:	85 c0                	test   %eax,%eax
408461:	74 15                	je     0x408478
408463:	50                   	push   %eax
408464:	ff 15 54 90 41 00    	call   *0x419054
40846a:	85 c0                	test   %eax,%eax
40846c:	75 0a                	jne    0x408478
40846e:	ff 74 f7 18          	push   0x18(%edi,%esi,8)
408472:	e8 a1 cc ff ff       	call   0x405118
408477:	59                   	pop    %ecx
408478:	8b 07                	mov    (%edi),%eax
40847a:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40847d:	89 01                	mov    %eax,(%ecx)
40847f:	89 4c f7 18          	mov    %ecx,0x18(%edi,%esi,8)
408483:	89 5c f7 10          	mov    %ebx,0x10(%edi,%esi,8)
408487:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40848e:	e8 0b 00 00 00       	call   0x40849e
408493:	8b c3                	mov    %ebx,%eax
408495:	e8 5b 29 00 00       	call   0x40adf5
40849a:	c3                   	ret
40849b:	8b 5d d8             	mov    -0x28(%ebp),%ebx
40849e:	6a 0c                	push   $0xc
4084a0:	e8 66 01 00 00       	call   0x40860b
4084a5:	59                   	pop    %ecx
4084a6:	c3                   	ret
4084a7:	55                   	push   %ebp
4084a8:	8b ec                	mov    %esp,%ebp
4084aa:	56                   	push   %esi
4084ab:	8b 75 08             	mov    0x8(%ebp),%esi
4084ae:	83 3c f5 60 07 42 00 	cmpl   $0x0,0x420760(,%esi,8)
4084b5:	00
4084b6:	75 13                	jne    0x4084cb
4084b8:	56                   	push   %esi
4084b9:	e8 71 00 00 00       	call   0x40852f
4084be:	59                   	pop    %ecx
4084bf:	85 c0                	test   %eax,%eax
4084c1:	75 08                	jne    0x4084cb
4084c3:	6a 11                	push   $0x11
4084c5:	e8 01 26 00 00       	call   0x40aacb
4084ca:	59                   	pop    %ecx
4084cb:	ff 34 f5 60 07 42 00 	push   0x420760(,%esi,8)
4084d2:	ff 15 60 90 41 00    	call   *0x419060
4084d8:	5e                   	pop    %esi
4084d9:	5d                   	pop    %ebp
4084da:	c3                   	ret
4084db:	56                   	push   %esi
4084dc:	57                   	push   %edi
4084dd:	be 60 07 42 00       	mov    $0x420760,%esi
4084e2:	8b fe                	mov    %esi,%edi
4084e4:	53                   	push   %ebx
4084e5:	8b 1f                	mov    (%edi),%ebx
4084e7:	85 db                	test   %ebx,%ebx
4084e9:	74 17                	je     0x408502
4084eb:	83 7f 04 01          	cmpl   $0x1,0x4(%edi)
4084ef:	74 11                	je     0x408502
4084f1:	53                   	push   %ebx
4084f2:	ff 15 6c 90 41 00    	call   *0x41906c
4084f8:	53                   	push   %ebx
4084f9:	e8 1a cc ff ff       	call   0x405118
4084fe:	83 27 00             	andl   $0x0,(%edi)
408501:	59                   	pop    %ecx
408502:	83 c7 08             	add    $0x8,%edi
408505:	81 ff 80 08 42 00    	cmp    $0x420880,%edi
40850b:	7c d8                	jl     0x4084e5
40850d:	5b                   	pop    %ebx
40850e:	83 3e 00             	cmpl   $0x0,(%esi)
408511:	74 0e                	je     0x408521
408513:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
408517:	75 08                	jne    0x408521
408519:	ff 36                	push   (%esi)
40851b:	ff 15 6c 90 41 00    	call   *0x41906c
408521:	83 c6 08             	add    $0x8,%esi
408524:	81 fe 80 08 42 00    	cmp    $0x420880,%esi
40852a:	7c e2                	jl     0x40850e
40852c:	5f                   	pop    %edi
40852d:	5e                   	pop    %esi
40852e:	c3                   	ret
40852f:	6a 08                	push   $0x8
408531:	68 90 e4 41 00       	push   $0x41e490
408536:	e8 75 28 00 00       	call   0x40adb0
40853b:	83 3d 54 27 42 00 00 	cmpl   $0x0,0x422754
408542:	75 18                	jne    0x40855c
408544:	e8 5c 2a 00 00       	call   0x40afa5
408549:	6a 1e                	push   $0x1e
40854b:	e8 b2 2a 00 00       	call   0x40b002
408550:	68 ff 00 00 00       	push   $0xff
408555:	e8 5b 25 00 00       	call   0x40aab5
40855a:	59                   	pop    %ecx
40855b:	59                   	pop    %ecx
40855c:	8b 7d 08             	mov    0x8(%ebp),%edi
40855f:	83 3c fd 60 07 42 00 	cmpl   $0x0,0x420760(,%edi,8)
408566:	00
408567:	75 5b                	jne    0x4085c4
408569:	6a 18                	push   $0x18
40856b:	e8 32 05 00 00       	call   0x408aa2
408570:	59                   	pop    %ecx
408571:	8b f0                	mov    %eax,%esi
408573:	85 f6                	test   %esi,%esi
408575:	75 0f                	jne    0x408586
408577:	e8 01 fc ff ff       	call   0x40817d
40857c:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
408582:	33 c0                	xor    %eax,%eax
408584:	eb 41                	jmp    0x4085c7
408586:	6a 0a                	push   $0xa
408588:	e8 1a ff ff ff       	call   0x4084a7
40858d:	59                   	pop    %ecx
40858e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408592:	83 3c fd 60 07 42 00 	cmpl   $0x0,0x420760(,%edi,8)
408599:	00
40859a:	75 15                	jne    0x4085b1
40859c:	68 a0 0f 00 00       	push   $0xfa0
4085a1:	56                   	push   %esi
4085a2:	ff 15 94 90 41 00    	call   *0x419094
4085a8:	89 34 fd 60 07 42 00 	mov    %esi,0x420760(,%edi,8)
4085af:	eb 07                	jmp    0x4085b8
4085b1:	56                   	push   %esi
4085b2:	e8 61 cb ff ff       	call   0x405118
4085b7:	59                   	pop    %ecx
4085b8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4085bf:	e8 09 00 00 00       	call   0x4085cd
4085c4:	33 c0                	xor    %eax,%eax
4085c6:	40                   	inc    %eax
4085c7:	e8 29 28 00 00       	call   0x40adf5
4085cc:	c3                   	ret
4085cd:	6a 0a                	push   $0xa
4085cf:	e8 37 00 00 00       	call   0x40860b
4085d4:	59                   	pop    %ecx
4085d5:	c3                   	ret
4085d6:	56                   	push   %esi
4085d7:	57                   	push   %edi
4085d8:	be 60 07 42 00       	mov    $0x420760,%esi
4085dd:	bf 58 1c 42 00       	mov    $0x421c58,%edi
4085e2:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
4085e6:	75 12                	jne    0x4085fa
4085e8:	89 3e                	mov    %edi,(%esi)
4085ea:	68 a0 0f 00 00       	push   $0xfa0
4085ef:	ff 36                	push   (%esi)
4085f1:	83 c7 18             	add    $0x18,%edi
4085f4:	ff 15 94 90 41 00    	call   *0x419094
4085fa:	83 c6 08             	add    $0x8,%esi
4085fd:	81 fe 80 08 42 00    	cmp    $0x420880,%esi
408603:	7c dd                	jl     0x4085e2
408605:	33 c0                	xor    %eax,%eax
408607:	5f                   	pop    %edi
408608:	40                   	inc    %eax
408609:	5e                   	pop    %esi
40860a:	c3                   	ret
40860b:	55                   	push   %ebp
40860c:	8b ec                	mov    %esp,%ebp
40860e:	8b 45 08             	mov    0x8(%ebp),%eax
408611:	ff 34 c5 60 07 42 00 	push   0x420760(,%eax,8)
408618:	ff 15 64 90 41 00    	call   *0x419064
40861e:	5d                   	pop    %ebp
40861f:	c3                   	ret
408620:	e8 b1 3d 00 00       	call   0x40c3d6
408625:	8b d0                	mov    %eax,%edx
408627:	8b 42 6c             	mov    0x6c(%edx),%eax
40862a:	3b 05 44 0f 42 00    	cmp    0x420f44,%eax
408630:	74 10                	je     0x408642
408632:	8b 0d 0c 10 42 00    	mov    0x42100c,%ecx
408638:	85 4a 70             	test   %ecx,0x70(%edx)
40863b:	75 05                	jne    0x408642
40863d:	e8 e4 33 00 00       	call   0x40ba26
408642:	8b 80 90 00 00 00    	mov    0x90(%eax),%eax
408648:	c3                   	ret
408649:	55                   	push   %ebp
40864a:	8b ec                	mov    %esp,%ebp
40864c:	83 ec 10             	sub    $0x10,%esp
40864f:	ff 75 0c             	push   0xc(%ebp)
408652:	8d 4d f0             	lea    -0x10(%ebp),%ecx
408655:	e8 a3 cb ff ff       	call   0x4051fd
40865a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40865d:	83 79 74 01          	cmpl   $0x1,0x74(%ecx)
408661:	7e 15                	jle    0x408678
408663:	8d 45 f0             	lea    -0x10(%ebp),%eax
408666:	50                   	push   %eax
408667:	6a 04                	push   $0x4
408669:	ff 75 08             	push   0x8(%ebp)
40866c:	e8 7f 3b 00 00       	call   0x40c1f0
408671:	83 c4 0c             	add    $0xc,%esp
408674:	8b c8                	mov    %eax,%ecx
408676:	eb 10                	jmp    0x408688
408678:	8b 89 90 00 00 00    	mov    0x90(%ecx),%ecx
40867e:	8b 45 08             	mov    0x8(%ebp),%eax
408681:	0f b7 0c 41          	movzwl (%ecx,%eax,2),%ecx
408685:	83 e1 04             	and    $0x4,%ecx
408688:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40868c:	74 07                	je     0x408695
40868e:	8b 45 f8             	mov    -0x8(%ebp),%eax
408691:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
408695:	8b c1                	mov    %ecx,%eax
408697:	c9                   	leave
408698:	c3                   	ret
408699:	55                   	push   %ebp
40869a:	8b ec                	mov    %esp,%ebp
40869c:	83 ec 10             	sub    $0x10,%esp
40869f:	ff 75 0c             	push   0xc(%ebp)
4086a2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4086a5:	e8 53 cb ff ff       	call   0x4051fd
4086aa:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4086ad:	83 79 74 01          	cmpl   $0x1,0x74(%ecx)
4086b1:	7e 15                	jle    0x4086c8
4086b3:	8d 45 f0             	lea    -0x10(%ebp),%eax
4086b6:	50                   	push   %eax
4086b7:	6a 02                	push   $0x2
4086b9:	ff 75 08             	push   0x8(%ebp)
4086bc:	e8 2f 3b 00 00       	call   0x40c1f0
4086c1:	83 c4 0c             	add    $0xc,%esp
4086c4:	8b c8                	mov    %eax,%ecx
4086c6:	eb 10                	jmp    0x4086d8
4086c8:	8b 89 90 00 00 00    	mov    0x90(%ecx),%ecx
4086ce:	8b 45 08             	mov    0x8(%ebp),%eax
4086d1:	0f b7 0c 41          	movzwl (%ecx,%eax,2),%ecx
4086d5:	83 e1 02             	and    $0x2,%ecx
4086d8:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
4086dc:	74 07                	je     0x4086e5
4086de:	8b 45 f8             	mov    -0x8(%ebp),%eax
4086e1:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
4086e5:	8b c1                	mov    %ecx,%eax
4086e7:	c9                   	leave
4086e8:	c3                   	ret
4086e9:	55                   	push   %ebp
4086ea:	8b ec                	mov    %esp,%ebp
4086ec:	83 ec 10             	sub    $0x10,%esp
4086ef:	ff 75 0c             	push   0xc(%ebp)
4086f2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4086f5:	e8 03 cb ff ff       	call   0x4051fd
4086fa:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4086fd:	83 79 74 01          	cmpl   $0x1,0x74(%ecx)
408701:	7e 15                	jle    0x408718
408703:	8d 45 f0             	lea    -0x10(%ebp),%eax
408706:	50                   	push   %eax
408707:	6a 01                	push   $0x1
408709:	ff 75 08             	push   0x8(%ebp)
40870c:	e8 df 3a 00 00       	call   0x40c1f0
408711:	83 c4 0c             	add    $0xc,%esp
408714:	8b c8                	mov    %eax,%ecx
408716:	eb 10                	jmp    0x408728
408718:	8b 89 90 00 00 00    	mov    0x90(%ecx),%ecx
40871e:	8b 45 08             	mov    0x8(%ebp),%eax
408721:	0f b7 0c 41          	movzwl (%ecx,%eax,2),%ecx
408725:	83 e1 01             	and    $0x1,%ecx
408728:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40872c:	74 07                	je     0x408735
40872e:	8b 45 f8             	mov    -0x8(%ebp),%eax
408731:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
408735:	8b c1                	mov    %ecx,%eax
408737:	c9                   	leave
408738:	c3                   	ret
408739:	55                   	push   %ebp
40873a:	8b ec                	mov    %esp,%ebp
40873c:	83 3d 74 27 42 00 00 	cmpl   $0x0,0x422774
408743:	75 11                	jne    0x408756
408745:	8b 4d 08             	mov    0x8(%ebp),%ecx
408748:	a1 d8 0f 42 00       	mov    0x420fd8,%eax
40874d:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
408751:	83 e0 04             	and    $0x4,%eax
408754:	5d                   	pop    %ebp
408755:	c3                   	ret
408756:	6a 00                	push   $0x0
408758:	ff 75 08             	push   0x8(%ebp)
40875b:	e8 e9 fe ff ff       	call   0x408649
408760:	59                   	pop    %ecx
408761:	59                   	pop    %ecx
408762:	5d                   	pop    %ebp
408763:	c3                   	ret
408764:	55                   	push   %ebp
408765:	8b ec                	mov    %esp,%ebp
408767:	83 3d 74 27 42 00 00 	cmpl   $0x0,0x422774
40876e:	75 11                	jne    0x408781
408770:	8b 4d 08             	mov    0x8(%ebp),%ecx
408773:	a1 d8 0f 42 00       	mov    0x420fd8,%eax
408778:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
40877c:	83 e0 02             	and    $0x2,%eax
40877f:	5d                   	pop    %ebp
408780:	c3                   	ret
408781:	6a 00                	push   $0x0
408783:	ff 75 08             	push   0x8(%ebp)
408786:	e8 0e ff ff ff       	call   0x408699