40647d:	e8 fb 1c 00 00       	call   0x40817d
406482:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406488:	e8 68 51 00 00       	call   0x40b5f5
40648d:	8b c7                	mov    %edi,%eax
40648f:	e8 61 49 00 00       	call   0x40adf5
406494:	c3                   	ret
406495:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406499:	74 06                	je     0x4064a1
40649b:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40649f:	eb ec                	jmp    0x40648d
4064a1:	56                   	push   %esi
4064a2:	e8 74 fe ff ff       	call   0x40631b
4064a7:	59                   	pop    %ecx
4064a8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4064ac:	56                   	push   %esi
4064ad:	e8 3f ff ff ff       	call   0x4063f1
4064b2:	59                   	pop    %ecx
4064b3:	8b f8                	mov    %eax,%edi
4064b5:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4064b8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4064bf:	e8 08 00 00 00       	call   0x4064cc
4064c4:	eb c7                	jmp    0x40648d
4064c6:	8b 75 08             	mov    0x8(%ebp),%esi
4064c9:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4064cc:	56                   	push   %esi
4064cd:	e8 b8 fe ff ff       	call   0x40638a
4064d2:	59                   	pop    %ecx
4064d3:	c3                   	ret
4064d4:	55                   	push   %ebp
4064d5:	8b ec                	mov    %esp,%ebp
4064d7:	56                   	push   %esi
4064d8:	8b 75 08             	mov    0x8(%ebp),%esi
4064db:	85 f6                	test   %esi,%esi
4064dd:	75 09                	jne    0x4064e8
4064df:	56                   	push   %esi
4064e0:	e8 f7 00 00 00       	call   0x4065dc
4064e5:	59                   	pop    %ecx
4064e6:	eb 2f                	jmp    0x406517
4064e8:	56                   	push   %esi
4064e9:	e8 2c 00 00 00       	call   0x40651a
4064ee:	59                   	pop    %ecx
4064ef:	85 c0                	test   %eax,%eax
4064f1:	74 05                	je     0x4064f8
4064f3:	83 c8 ff             	or     $0xffffffff,%eax
4064f6:	eb 1f                	jmp    0x406517
4064f8:	f7 46 0c 00 40 00 00 	testl  $0x4000,0xc(%esi)
4064ff:	74 14                	je     0x406515
406501:	56                   	push   %esi
406502:	e8 32 7a 00 00       	call   0x40df39
406507:	50                   	push   %eax
406508:	e8 ff 7b 00 00       	call   0x40e10c
40650d:	59                   	pop    %ecx
40650e:	f7 d8                	neg    %eax
406510:	59                   	pop    %ecx
406511:	1b c0                	sbb    %eax,%eax
406513:	eb 02                	jmp    0x406517
406515:	33 c0                	xor    %eax,%eax
406517:	5e                   	pop    %esi
406518:	5d                   	pop    %ebp
406519:	c3                   	ret
40651a:	55                   	push   %ebp
40651b:	8b ec                	mov    %esp,%ebp
40651d:	53                   	push   %ebx
40651e:	56                   	push   %esi
40651f:	8b 75 08             	mov    0x8(%ebp),%esi
406522:	33 db                	xor    %ebx,%ebx
406524:	8b 46 0c             	mov    0xc(%esi),%eax
406527:	24 03                	and    $0x3,%al
406529:	3c 02                	cmp    $0x2,%al
40652b:	75 42                	jne    0x40656f
40652d:	f7 46 0c 08 01 00 00 	testl  $0x108,0xc(%esi)
406534:	74 39                	je     0x40656f
406536:	57                   	push   %edi
406537:	8b 3e                	mov    (%esi),%edi
406539:	2b 7e 08             	sub    0x8(%esi),%edi
40653c:	85 ff                	test   %edi,%edi
40653e:	7e 2e                	jle    0x40656e
406540:	57                   	push   %edi
406541:	ff 76 08             	push   0x8(%esi)
406544:	56                   	push   %esi
406545:	e8 ef 79 00 00       	call   0x40df39
40654a:	59                   	pop    %ecx
40654b:	50                   	push   %eax
40654c:	e8 b2 7c 00 00       	call   0x40e203
406551:	83 c4 0c             	add    $0xc,%esp
406554:	3b c7                	cmp    %edi,%eax
406556:	75 0f                	jne    0x406567
406558:	8b 46 0c             	mov    0xc(%esi),%eax
40655b:	84 c0                	test   %al,%al
40655d:	79 0f                	jns    0x40656e
40655f:	83 e0 fd             	and    $0xfffffffd,%eax
406562:	89 46 0c             	mov    %eax,0xc(%esi)
406565:	eb 07                	jmp    0x40656e
406567:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
40656b:	83 cb ff             	or     $0xffffffff,%ebx
40656e:	5f                   	pop    %edi
40656f:	8b 4e 08             	mov    0x8(%esi),%ecx
406572:	83 66 04 00          	andl   $0x0,0x4(%esi)
406576:	89 0e                	mov    %ecx,(%esi)
406578:	5e                   	pop    %esi
406579:	8b c3                	mov    %ebx,%eax
40657b:	5b                   	pop    %ebx
40657c:	5d                   	pop    %ebp
40657d:	c3                   	ret
40657e:	6a 01                	push   $0x1
406580:	e8 57 00 00 00       	call   0x4065dc
406585:	59                   	pop    %ecx
406586:	c3                   	ret
406587:	6a 0c                	push   $0xc
406589:	68 28 e2 41 00       	push   $0x41e228
40658e:	e8 1d 48 00 00       	call   0x40adb0
406593:	8b 75 08             	mov    0x8(%ebp),%esi
406596:	85 f6                	test   %esi,%esi
406598:	75 09                	jne    0x4065a3
40659a:	56                   	push   %esi
40659b:	e8 3c 00 00 00       	call   0x4065dc
4065a0:	59                   	pop    %ecx
4065a1:	eb 25                	jmp    0x4065c8
4065a3:	56                   	push   %esi
4065a4:	e8 72 fd ff ff       	call   0x40631b
4065a9:	59                   	pop    %ecx
4065aa:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4065ae:	56                   	push   %esi
4065af:	e8 20 ff ff ff       	call   0x4064d4
4065b4:	59                   	pop    %ecx
4065b5:	8b f8                	mov    %eax,%edi
4065b7:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4065ba:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4065c1:	e8 0e 00 00 00       	call   0x4065d4
4065c6:	8b c7                	mov    %edi,%eax
4065c8:	e8 28 48 00 00       	call   0x40adf5
4065cd:	c3                   	ret
4065ce:	8b 75 08             	mov    0x8(%ebp),%esi
4065d1:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4065d4:	56                   	push   %esi
4065d5:	e8 b0 fd ff ff       	call   0x40638a
4065da:	59                   	pop    %ecx
4065db:	c3                   	ret
4065dc:	6a 14                	push   $0x14
4065de:	68 48 e2 41 00       	push   $0x41e248
4065e3:	e8 c8 47 00 00       	call   0x40adb0
4065e8:	33 ff                	xor    %edi,%edi
4065ea:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4065ed:	21 7d dc             	and    %edi,-0x24(%ebp)
4065f0:	6a 01                	push   $0x1
4065f2:	e8 b0 1e 00 00       	call   0x4084a7
4065f7:	59                   	pop    %ecx
4065f8:	21 7d fc             	and    %edi,-0x4(%ebp)
4065fb:	33 f6                	xor    %esi,%esi
4065fd:	8b 5d 08             	mov    0x8(%ebp),%ebx
406600:	89 75 e0             	mov    %esi,-0x20(%ebp)
406603:	3b 35 38 2b 42 00    	cmp    0x422b38,%esi
406609:	0f 8d 86 00 00 00    	jge    0x406695
40660f:	a1 34 2b 42 00       	mov    0x422b34,%eax
406614:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406617:	85 c0                	test   %eax,%eax
406619:	74 5d                	je     0x406678
40661b:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
40661f:	74 57                	je     0x406678
406621:	50                   	push   %eax
406622:	56                   	push   %esi
406623:	e8 32 fd ff ff       	call   0x40635a
406628:	59                   	pop    %ecx
406629:	59                   	pop    %ecx
40662a:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
406631:	a1 34 2b 42 00       	mov    0x422b34,%eax
406636:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406639:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
40663d:	74 30                	je     0x40666f
40663f:	83 fb 01             	cmp    $0x1,%ebx
406642:	75 12                	jne    0x406656
406644:	50                   	push   %eax
406645:	e8 8a fe ff ff       	call   0x4064d4
40664a:	59                   	pop    %ecx
40664b:	83 f8 ff             	cmp    $0xffffffff,%eax
40664e:	74 1f                	je     0x40666f
406650:	47                   	inc    %edi
406651:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406654:	eb 19                	jmp    0x40666f
406656:	85 db                	test   %ebx,%ebx
406658:	75 15                	jne    0x40666f
40665a:	f6 40 0c 02          	testb  $0x2,0xc(%eax)
40665e:	74 0f                	je     0x40666f
406660:	50                   	push   %eax
406661:	e8 6e fe ff ff       	call   0x4064d4
406666:	59                   	pop    %ecx
406667:	83 f8 ff             	cmp    $0xffffffff,%eax
40666a:	75 03                	jne    0x40666f
40666c:	09 45 dc             	or     %eax,-0x24(%ebp)
40666f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406673:	e8 0c 00 00 00       	call   0x406684
406678:	46                   	inc    %esi
406679:	eb 85                	jmp    0x406600
40667b:	8b 5d 08             	mov    0x8(%ebp),%ebx
40667e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406681:	8b 75 e0             	mov    -0x20(%ebp),%esi
406684:	a1 34 2b 42 00       	mov    0x422b34,%eax
406689:	ff 34 b0             	push   (%eax,%esi,4)
40668c:	56                   	push   %esi
40668d:	e8 32 fd ff ff       	call   0x4063c4
406692:	59                   	pop    %ecx
406693:	59                   	pop    %ecx
406694:	c3                   	ret
406695:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40669c:	e8 16 00 00 00       	call   0x4066b7
4066a1:	83 fb 01             	cmp    $0x1,%ebx
4066a4:	8b c7                	mov    %edi,%eax
4066a6:	74 03                	je     0x4066ab
4066a8:	8b 45 dc             	mov    -0x24(%ebp),%eax
4066ab:	e8 45 47 00 00       	call   0x40adf5
4066b0:	c3                   	ret
4066b1:	8b 5d 08             	mov    0x8(%ebp),%ebx
4066b4:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4066b7:	6a 01                	push   $0x1
4066b9:	e8 4d 1f 00 00       	call   0x40860b
4066be:	59                   	pop    %ecx
4066bf:	c3                   	ret
4066c0:	6a 0c                	push   $0xc
4066c2:	68 70 e2 41 00       	push   $0x41e270
4066c7:	e8 e4 46 00 00       	call   0x40adb0
4066cc:	33 ff                	xor    %edi,%edi
4066ce:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4066d1:	33 c0                	xor    %eax,%eax
4066d3:	8b 75 08             	mov    0x8(%ebp),%esi
4066d6:	85 f6                	test   %esi,%esi
4066d8:	0f 95 c0             	setne  %al
4066db:	85 c0                	test   %eax,%eax
4066dd:	75 18                	jne    0x4066f7
4066df:	e8 99 1a 00 00       	call   0x40817d
4066e4:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4066ea:	e8 06 4f 00 00       	call   0x40b5f5
4066ef:	83 c8 ff             	or     $0xffffffff,%eax
4066f2:	e9 b7 00 00 00       	jmp    0x4067ae
4066f7:	e8 f6 6e 00 00       	call   0x40d5f2
4066fc:	85 c0                	test   %eax,%eax
4066fe:	78 ef                	js     0x4066ef
406700:	56                   	push   %esi
406701:	e8 15 fc ff ff       	call   0x40631b
406706:	59                   	pop    %ecx
406707:	89 7d fc             	mov    %edi,-0x4(%ebp)
40670a:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
40670e:	75 71                	jne    0x406781
406710:	56                   	push   %esi
406711:	e8 23 78 00 00       	call   0x40df39
406716:	59                   	pop    %ecx
406717:	8b d0                	mov    %eax,%edx
406719:	83 fa ff             	cmp    $0xffffffff,%edx
40671c:	74 19                	je     0x406737
40671e:	83 fa fe             	cmp    $0xfffffffe,%edx
406721:	74 14                	je     0x406737
406723:	8b ca                	mov    %edx,%ecx
406725:	c1 f9 05             	sar    $0x5,%ecx
406728:	83 e0 1f             	and    $0x1f,%eax
40672b:	c1 e0 06             	shl    $0x6,%eax
40672e:	03 04 8d 20 2a 42 00 	add    0x422a20(,%ecx,4),%eax
406735:	eb 05                	jmp    0x40673c
406737:	b8 18 10 42 00       	mov    $0x421018,%eax
40673c:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
406740:	75 29                	jne    0x40676b
406742:	83 fa ff             	cmp    $0xffffffff,%edx
406745:	74 19                	je     0x406760
406747:	83 fa fe             	cmp    $0xfffffffe,%edx
40674a:	74 14                	je     0x406760
40674c:	8b c2                	mov    %edx,%eax
40674e:	c1 f8 05             	sar    $0x5,%eax
406751:	83 e2 1f             	and    $0x1f,%edx
406754:	c1 e2 06             	shl    $0x6,%edx
406757:	03 14 85 20 2a 42 00 	add    0x422a20(,%eax,4),%edx
40675e:	eb 05                	jmp    0x406765
406760:	ba 18 10 42 00       	mov    $0x421018,%edx
406765:	f6 42 24 80          	testb  $0x80,0x24(%edx)
406769:	74 16                	je     0x406781
40676b:	e8 0d 1a 00 00       	call   0x40817d
406770:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406776:	e8 7a 4e 00 00       	call   0x40b5f5
40677b:	83 cf ff             	or     $0xffffffff,%edi
40677e:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406781:	85 ff                	test   %edi,%edi
406783:	75 1b                	jne    0x4067a0
406785:	ff 4e 04             	decl   0x4(%esi)
406788:	78 0a                	js     0x406794
40678a:	8b 06                	mov    (%esi),%eax
40678c:	0f b6 38             	movzbl (%eax),%edi
40678f:	40                   	inc    %eax
406790:	89 06                	mov    %eax,(%esi)
406792:	eb 09                	jmp    0x40679d
406794:	56                   	push   %esi
406795:	e8 a2 83 00 00       	call   0x40eb3c
40679a:	59                   	pop    %ecx
40679b:	8b f8                	mov    %eax,%edi
40679d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4067a0:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4067a7:	e8 0e 00 00 00       	call   0x4067ba
4067ac:	8b c7                	mov    %edi,%eax
4067ae:	e8 42 46 00 00       	call   0x40adf5
4067b3:	c3                   	ret
4067b4:	8b 75 08             	mov    0x8(%ebp),%esi
4067b7:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4067ba:	56                   	push   %esi
4067bb:	e8 ca fb ff ff       	call   0x40638a
4067c0:	59                   	pop    %ecx
4067c1:	c3                   	ret
4067c2:	55                   	push   %ebp
4067c3:	8b ec                	mov    %esp,%ebp
4067c5:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4067c9:	75 15                	jne    0x4067e0
4067cb:	e8 ad 19 00 00       	call   0x40817d
4067d0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4067d6:	e8 1a 4e 00 00       	call   0x40b5f5
4067db:	83 c8 ff             	or     $0xffffffff,%eax
4067de:	5d                   	pop    %ebp
4067df:	c3                   	ret
4067e0:	56                   	push   %esi
4067e1:	8b 75 0c             	mov    0xc(%ebp),%esi
4067e4:	85 f6                	test   %esi,%esi
4067e6:	75 16                	jne    0x4067fe
4067e8:	e8 90 19 00 00       	call   0x40817d
4067ed:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4067f3:	e8 fd 4d 00 00       	call   0x40b5f5
4067f8:	83 c8 ff             	or     $0xffffffff,%eax
4067fb:	5e                   	pop    %esi
4067fc:	5d                   	pop    %ebp
4067fd:	c3                   	ret
4067fe:	ff 75 08             	push   0x8(%ebp)
406801:	e8 64 84 00 00       	call   0x40ec6a
406806:	89 06                	mov    %eax,(%esi)
406808:	23 c2                	and    %edx,%eax
40680a:	59                   	pop    %ecx
40680b:	89 56 04             	mov    %edx,0x4(%esi)
40680e:	83 f8 ff             	cmp    $0xffffffff,%eax
406811:	74 e5                	je     0x4067f8
406813:	33 c0                	xor    %eax,%eax
406815:	eb e4                	jmp    0x4067fb
406817:	6a 0c                	push   $0xc
406819:	68 90 e2 41 00       	push   $0x41e290
40681e:	e8 8d 45 00 00       	call   0x40adb0
406823:	33 ff                	xor    %edi,%edi
406825:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406828:	33 c0                	xor    %eax,%eax
40682a:	8b 75 0c             	mov    0xc(%ebp),%esi
40682d:	85 f6                	test   %esi,%esi
40682f:	0f 95 c0             	setne  %al
406832:	85 c0                	test   %eax,%eax
406834:	75 18                	jne    0x40684e
406836:	e8 42 19 00 00       	call   0x40817d
40683b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406841:	e8 af 4d 00 00       	call   0x40b5f5
406846:	83 c8 ff             	or     $0xffffffff,%eax
406849:	e9 bf 00 00 00       	jmp    0x40690d
40684e:	e8 9f 6d 00 00       	call   0x40d5f2