40a778:	15 40 00
40a77b:	59                   	pop    %ecx
40a77c:	e8 2e fe ff ff       	call   0x40a5af
40a781:	83 fe 01             	cmp    $0x1,%esi
40a784:	75 30                	jne    0x40a7b6
40a786:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a78c:	8b 85 7c f9 ff ff    	mov    -0x684(%ebp),%eax
40a792:	89 85 60 f9 ff ff    	mov    %eax,-0x6a0(%ebp)
40a798:	8b 06                	mov    (%esi),%eax
40a79a:	85 c0                	test   %eax,%eax
40a79c:	75 05                	jne    0x40a7a3
40a79e:	b8 fc 12 40 00       	mov    $0x4012fc,%eax
40a7a3:	89 85 64 f9 ff ff    	mov    %eax,-0x69c(%ebp)
40a7a9:	8d 95 60 f9 ff ff    	lea    -0x6a0(%ebp),%edx
40a7af:	6a 23                	push   $0x23
40a7b1:	e9 43 02 00 00       	jmp    0x40a9f9
40a7b6:	83 fe 04             	cmp    $0x4,%esi
40a7b9:	75 16                	jne    0x40a7d1
40a7bb:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a7c1:	33 c9                	xor    %ecx,%ecx
40a7c3:	83 3e 01             	cmpl   $0x1,(%esi)
40a7c6:	0f 95 c1             	setne  %cl
40a7c9:	83 c1 73             	add    $0x73,%ecx
40a7cc:	e9 4b 02 00 00       	jmp    0x40aa1c
40a7d1:	83 fe 09             	cmp    $0x9,%esi
40a7d4:	75 32                	jne    0x40a808
40a7d6:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a7dc:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a7df:	6a 0a                	push   $0xa
40a7e1:	50                   	push   %eax
40a7e2:	0f b7 06             	movzwl (%esi),%eax
40a7e5:	50                   	push   %eax
40a7e6:	ff 15 20 f1 40 00    	call   *0x40f120
40a7ec:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a7ef:	83 c4 0c             	add    $0xc,%esp
40a7f2:	89 85 88 f9 ff ff    	mov    %eax,-0x678(%ebp)
40a7f8:	8d 95 88 f9 ff ff    	lea    -0x678(%ebp),%edx
40a7fe:	b9 98 00 00 00       	mov    $0x98,%ecx
40a803:	e9 1a 02 00 00       	jmp    0x40aa22
40a808:	83 fe 0b             	cmp    $0xb,%esi
40a80b:	75 2b                	jne    0x40a838
40a80d:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a813:	b8 64 15 40 00       	mov    $0x401564,%eax
40a818:	80 3e 00             	cmpb   $0x0,(%esi)
40a81b:	74 05                	je     0x40a822
40a81d:	b8 70 15 40 00       	mov    $0x401570,%eax
40a822:	89 85 88 f9 ff ff    	mov    %eax,-0x678(%ebp)
40a828:	8d 95 88 f9 ff ff    	lea    -0x678(%ebp),%edx
40a82e:	b9 a9 00 00 00       	mov    $0xa9,%ecx
40a833:	e9 ea 01 00 00       	jmp    0x40aa22
40a838:	83 fe 05             	cmp    $0x5,%esi
40a83b:	75 27                	jne    0x40a864
40a83d:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a843:	83 3e 01             	cmpl   $0x1,(%esi)
40a846:	75 08                	jne    0x40a850
40a848:	6a 77                	push   $0x77
40a84a:	59                   	pop    %ecx
40a84b:	e9 cc 01 00 00       	jmp    0x40aa1c
40a850:	33 c9                	xor    %ecx,%ecx
40a852:	83 3e 03             	cmpl   $0x3,(%esi)
40a855:	0f 95 c1             	setne  %cl
40a858:	49                   	dec    %ecx
40a859:	83 e1 05             	and    $0x5,%ecx
40a85c:	83 c1 78             	add    $0x78,%ecx
40a85f:	e9 b8 01 00 00       	jmp    0x40aa1c
40a864:	83 fe 06             	cmp    $0x6,%esi
40a867:	0f 85 a1 00 00 00    	jne    0x40a90e
40a86d:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a873:	8b 85 7c f9 ff ff    	mov    -0x684(%ebp),%eax
40a879:	89 85 60 f9 ff ff    	mov    %eax,-0x6a0(%ebp)
40a87f:	8b 06                	mov    (%esi),%eax
40a881:	85 c0                	test   %eax,%eax
40a883:	75 05                	jne    0x40a88a
40a885:	b8 fc 12 40 00       	mov    $0x4012fc,%eax
40a88a:	6a 79                	push   $0x79
40a88c:	8d 95 60 f9 ff ff    	lea    -0x6a0(%ebp),%edx
40a892:	89 85 64 f9 ff ff    	mov    %eax,-0x69c(%ebp)
40a898:	59                   	pop    %ecx
40a899:	e8 11 fd ff ff       	call   0x40a5af
40a89e:	8b 16                	mov    (%esi),%edx
40a8a0:	85 d2                	test   %edx,%edx
40a8a2:	0f 84 a7 fe ff ff    	je     0x40a74f
40a8a8:	8b ca                	mov    %edx,%ecx
40a8aa:	8d 41 02             	lea    0x2(%ecx),%eax
40a8ad:	89 85 88 f9 ff ff    	mov    %eax,-0x678(%ebp)
40a8b3:	66 8b 01             	mov    (%ecx),%ax
40a8b6:	83 c1 02             	add    $0x2,%ecx
40a8b9:	66 3b c7             	cmp    %di,%ax
40a8bc:	75 f5                	jne    0x40a8b3
40a8be:	2b 8d 88 f9 ff ff    	sub    -0x678(%ebp),%ecx
40a8c4:	eb 30                	jmp    0x40a8f6
40a8c6:	6a 7a                	push   $0x7a
40a8c8:	8d 95 8c f9 ff ff    	lea    -0x674(%ebp),%edx
40a8ce:	59                   	pop    %ecx
40a8cf:	e8 db fc ff ff       	call   0x40a5af
40a8d4:	8b 95 8c f9 ff ff    	mov    -0x674(%ebp),%edx
40a8da:	8b ca                	mov    %edx,%ecx
40a8dc:	8d 41 02             	lea    0x2(%ecx),%eax
40a8df:	89 85 88 f9 ff ff    	mov    %eax,-0x678(%ebp)
40a8e5:	66 8b 01             	mov    (%ecx),%ax
40a8e8:	83 c1 02             	add    $0x2,%ecx
40a8eb:	66 3b c7             	cmp    %di,%ax
40a8ee:	75 f5                	jne    0x40a8e5
40a8f0:	2b 8d 88 f9 ff ff    	sub    -0x678(%ebp),%ecx
40a8f6:	d1 f9                	sar    $1,%ecx
40a8f8:	8d 42 02             	lea    0x2(%edx),%eax
40a8fb:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40a8fe:	89 85 8c f9 ff ff    	mov    %eax,-0x674(%ebp)
40a904:	66 39 38             	cmp    %di,(%eax)
40a907:	75 bd                	jne    0x40a8c6
40a909:	e9 41 fe ff ff       	jmp    0x40a74f
40a90e:	83 fe 02             	cmp    $0x2,%esi
40a911:	0f 85 e5 00 00 00    	jne    0x40a9fc
40a917:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40a91d:	8b 85 7c f9 ff ff    	mov    -0x684(%ebp),%eax
40a923:	89 85 98 f9 ff ff    	mov    %eax,-0x668(%ebp)
40a929:	83 3e ff             	cmpl   $0xffffffff,(%esi)
40a92c:	75 0c                	jne    0x40a93a
40a92e:	c7 85 9c f9 ff ff 7c 	movl   $0x40157c,-0x664(%ebp)
40a935:	15 40 00
40a938:	eb 1a                	jmp    0x40a954
40a93a:	6a 0a                	push   $0xa
40a93c:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a93f:	50                   	push   %eax
40a940:	ff 36                	push   (%esi)
40a942:	ff 15 20 f1 40 00    	call   *0x40f120
40a948:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a94b:	83 c4 0c             	add    $0xc,%esp
40a94e:	89 85 9c f9 ff ff    	mov    %eax,-0x664(%ebp)
40a954:	8b 46 04             	mov    0x4(%esi),%eax
40a957:	b9 fc 12 40 00       	mov    $0x4012fc,%ecx
40a95c:	85 c0                	test   %eax,%eax
40a95e:	75 02                	jne    0x40a962
40a960:	8b c1                	mov    %ecx,%eax
40a962:	89 85 a0 f9 ff ff    	mov    %eax,-0x660(%ebp)
40a968:	39 7e 08             	cmp    %edi,0x8(%esi)
40a96b:	74 03                	je     0x40a970
40a96d:	8b 4e 08             	mov    0x8(%esi),%ecx
40a970:	6a 33                	push   $0x33
40a972:	89 8d a4 f9 ff ff    	mov    %ecx,-0x65c(%ebp)
40a978:	8d 95 98 f9 ff ff    	lea    -0x668(%ebp),%edx
40a97e:	59                   	pop    %ecx
40a97f:	e8 2b fc ff ff       	call   0x40a5af
40a984:	39 7e 0c             	cmp    %edi,0xc(%esi)
40a987:	76 6c                	jbe    0x40a9f5
40a989:	8b 46 10             	mov    0x10(%esi),%eax
40a98c:	8b 0c f8             	mov    (%eax,%edi,8),%ecx
40a98f:	8b 54 f8 04          	mov    0x4(%eax,%edi,8),%edx
40a993:	8d 41 ff             	lea    -0x1(%ecx),%eax
40a996:	83 f8 02             	cmp    $0x2,%eax
40a999:	77 54                	ja     0x40a9ef
40a99b:	83 f9 01             	cmp    $0x1,%ecx
40a99e:	75 05                	jne    0x40a9a5
40a9a0:	6a 34                	push   $0x34
40a9a2:	58                   	pop    %eax
40a9a3:	eb 0f                	jmp    0x40a9b4
40a9a5:	33 c0                	xor    %eax,%eax
40a9a7:	83 f9 02             	cmp    $0x2,%ecx
40a9aa:	0f 95 c0             	setne  %al
40a9ad:	8d 04 45 36 00 00 00 	lea    0x36(,%eax,2),%eax
40a9b4:	89 85 8c f9 ff ff    	mov    %eax,-0x674(%ebp)
40a9ba:	85 ff                	test   %edi,%edi
40a9bc:	74 07                	je     0x40a9c5
40a9be:	40                   	inc    %eax
40a9bf:	89 85 8c f9 ff ff    	mov    %eax,-0x674(%ebp)
40a9c5:	6a 0a                	push   $0xa
40a9c7:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a9ca:	50                   	push   %eax
40a9cb:	52                   	push   %edx
40a9cc:	ff 15 20 f1 40 00    	call   *0x40f120
40a9d2:	8b 8d 8c f9 ff ff    	mov    -0x674(%ebp),%ecx
40a9d8:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a9db:	83 c4 0c             	add    $0xc,%esp
40a9de:	89 85 98 f9 ff ff    	mov    %eax,-0x668(%ebp)
40a9e4:	8d 95 98 f9 ff ff    	lea    -0x668(%ebp),%edx
40a9ea:	e8 c0 fb ff ff       	call   0x40a5af
40a9ef:	47                   	inc    %edi
40a9f0:	3b 7e 0c             	cmp    0xc(%esi),%edi
40a9f3:	72 94                	jb     0x40a989
40a9f5:	33 d2                	xor    %edx,%edx
40a9f7:	6a 2b                	push   $0x2b
40a9f9:	59                   	pop    %ecx
40a9fa:	eb 26                	jmp    0x40aa22
40a9fc:	83 fe 08             	cmp    $0x8,%esi
40a9ff:	0f 85 88 06 00 00    	jne    0x40b08d
40aa05:	8b b5 94 f9 ff ff    	mov    -0x66c(%ebp),%esi
40aa0b:	89 bd 88 f9 ff ff    	mov    %edi,-0x678(%ebp)
40aa11:	39 3e                	cmp    %edi,(%esi)
40aa13:	75 17                	jne    0x40aa2c
40aa15:	8b df                	mov    %edi,%ebx
40aa17:	b9 90 00 00 00       	mov    $0x90,%ecx
40aa1c:	8d 95 7c f9 ff ff    	lea    -0x684(%ebp),%edx
40aa22:	e8 88 fb ff ff       	call   0x40a5af
40aa27:	e9 23 fd ff ff       	jmp    0x40a74f
40aa2c:	8d 85 4c f9 ff ff    	lea    -0x6b4(%ebp),%eax
40aa32:	50                   	push   %eax
40aa33:	68 00 02 00 00       	push   $0x200
40aa38:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
40aa3e:	50                   	push   %eax
40aa3f:	8b 85 80 f9 ff ff    	mov    -0x680(%ebp),%eax
40aa45:	ff 30                	push   (%eax)
40aa47:	ff 15 60 00 41 00    	call   *0x410060
40aa4d:	85 c0                	test   %eax,%eax
40aa4f:	74 0c                	je     0x40aa5d
40aa51:	8b 85 b8 fd ff ff    	mov    -0x248(%ebp),%eax
40aa57:	89 85 88 f9 ff ff    	mov    %eax,-0x678(%ebp)
40aa5d:	8d 95 7c f9 ff ff    	lea    -0x684(%ebp),%edx
40aa63:	b9 89 00 00 00       	mov    $0x89,%ecx
40aa68:	e8 42 fb ff ff       	call   0x40a5af
40aa6d:	6a 2b                	push   $0x2b
40aa6f:	33 d2                	xor    %edx,%edx
40aa71:	59                   	pop    %ecx
40aa72:	e8 38 fb ff ff       	call   0x40a5af
40aa77:	89 bd 58 f9 ff ff    	mov    %edi,-0x6a8(%ebp)
40aa7d:	39 3e                	cmp    %edi,(%esi)
40aa7f:	0f 86 ba 05 00 00    	jbe    0x40b03f
40aa85:	8b 56 04             	mov    0x4(%esi),%edx
40aa88:	8b c7                	mov    %edi,%eax
40aa8a:	89 bd 94 f9 ff ff    	mov    %edi,-0x66c(%ebp)
40aa90:	33 c9                	xor    %ecx,%ecx
40aa92:	83 7c 02 04 01       	cmpl   $0x1,0x4(%edx,%eax,1)
40aa97:	0f 95 c1             	setne  %cl
40aa9a:	33 d2                	xor    %edx,%edx
40aa9c:	81 c1 91 00 00 00    	add    $0x91,%ecx
40aaa2:	e8 08 fb ff ff       	call   0x40a5af
40aaa7:	8b 56 04             	mov    0x4(%esi),%edx
40aaaa:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40aab0:	8b 04 11             	mov    (%ecx,%edx,1),%eax
40aab3:	83 f8 05             	cmp    $0x5,%eax
40aab6:	0f 87 68 01 00 00    	ja     0x40ac24
40aabc:	0f 84 1b 01 00 00    	je     0x40abdd
40aac2:	83 e8 01             	sub    $0x1,%eax
40aac5:	0f 84 ef 00 00 00    	je     0x40abba
40aacb:	83 e8 01             	sub    $0x1,%eax
40aace:	0f 84 9c 00 00 00    	je     0x40ab70
40aad4:	83 e8 01             	sub    $0x1,%eax
40aad7:	74 50                	je     0x40ab29
40aad9:	83 e8 01             	sub    $0x1,%eax
40aadc:	0f 85 3a 02 00 00    	jne    0x40ad1c
40aae2:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40aae8:	50                   	push   %eax
40aae9:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40aaed:	ff 15 08 f0 40 00    	call   *0x40f008
40aaf3:	85 c0                	test   %eax,%eax
40aaf5:	0f 85 21 02 00 00    	jne    0x40ad1c
40aafb:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40ab01:	8d 85 48 f9 ff ff    	lea    -0x6b8(%ebp),%eax
40ab07:	50                   	push   %eax
40ab08:	8b 46 04             	mov    0x4(%esi),%eax
40ab0b:	68 dc 16 40 00       	push   $0x4016dc
40ab10:	ff 74 01 08          	push   0x8(%ecx,%eax,1)
40ab14:	ff 15 04 f0 40 00    	call   *0x40f004
40ab1a:	f7 d8                	neg    %eax
40ab1c:	1b c0                	sbb    %eax,%eax
40ab1e:	8d 88 9b 00 00 00    	lea    0x9b(%eax),%ecx
40ab24:	e9 db 01 00 00       	jmp    0x40ad04
40ab29:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40ab2f:	50                   	push   %eax
40ab30:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40ab34:	ff 15 08 f0 40 00    	call   *0x40f008
40ab3a:	85 c0                	test   %eax,%eax
40ab3c:	0f 85 da 01 00 00    	jne    0x40ad1c
40ab42:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40ab48:	8d 85 44 f9 ff ff    	lea    -0x6bc(%ebp),%eax
40ab4e:	50                   	push   %eax
40ab4f:	8b 46 04             	mov    0x4(%esi),%eax
40ab52:	68 bc 16 40 00       	push   $0x4016bc
40ab57:	ff 74 01 08          	push   0x8(%ecx,%eax,1)
40ab5b:	ff 15 04 f0 40 00    	call   *0x40f004
40ab61:	f7 d8                	neg    %eax
40ab63:	1b c0                	sbb    %eax,%eax
40ab65:	8d 88 95 00 00 00    	lea    0x95(%eax),%ecx
40ab6b:	e9 94 01 00 00       	jmp    0x40ad04
40ab70:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40ab76:	50                   	push   %eax
40ab77:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40ab7b:	ff 15 08 f0 40 00    	call   *0x40f008
40ab81:	85 c0                	test   %eax,%eax
40ab83:	0f 85 93 01 00 00    	jne    0x40ad1c
40ab89:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40ab8f:	8d 85 40 f9 ff ff    	lea    -0x6c0(%ebp),%eax
40ab95:	50                   	push   %eax
40ab96:	8b 46 04             	mov    0x4(%esi),%eax
40ab99:	68 9c 16 40 00       	push   $0x40169c
40ab9e:	ff 74 01 08          	push   0x8(%ecx,%eax,1)
40aba2:	ff 15 04 f0 40 00    	call   *0x40f004
40aba8:	f7 d8                	neg    %eax
40abaa:	1b c0                	sbb    %eax,%eax
40abac:	83 e0 07             	and    $0x7,%eax
40abaf:	8d 88 8c 00 00 00    	lea    0x8c(%eax),%ecx
40abb5:	e9 4a 01 00 00       	jmp    0x40ad04
40abba:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40abc0:	50                   	push   %eax
40abc1:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40abc5:	ff 15 08 f0 40 00    	call   *0x40f008
40abcb:	85 c0                	test   %eax,%eax
40abcd:	0f 85 49 01 00 00    	jne    0x40ad1c
40abd3:	b9 8a 00 00 00       	mov    $0x8a,%ecx
40abd8:	e9 27 01 00 00       	jmp    0x40ad04
40abdd:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40abe3:	50                   	push   %eax
40abe4:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40abe8:	ff 15 08 f0 40 00    	call   *0x40f008
40abee:	85 c0                	test   %eax,%eax
40abf0:	0f 85 26 01 00 00    	jne    0x40ad1c
40abf6:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40abfc:	8d 85 3c f9 ff ff    	lea    -0x6c4(%ebp),%eax
40ac02:	50                   	push   %eax
40ac03:	8b 46 04             	mov    0x4(%esi),%eax
40ac06:	68 ac 16 40 00       	push   $0x4016ac
40ac0b:	ff 74 01 08          	push   0x8(%ecx,%eax,1)
40ac0f:	ff 15 04 f0 40 00    	call   *0x40f004
40ac15:	f7 d8                	neg    %eax
40ac17:	1b c0                	sbb    %eax,%eax
40ac19:	8d 88 9d 00 00 00    	lea    0x9d(%eax),%ecx
40ac1f:	e9 e0 00 00 00       	jmp    0x40ad04
40ac24:	83 e8 06             	sub    $0x6,%eax
40ac27:	74 74                	je     0x40ac9d
40ac29:	83 e8 01             	sub    $0x1,%eax
40ac2c:	74 2c                	je     0x40ac5a
40ac2e:	83 e8 0d             	sub    $0xd,%eax
40ac31:	0f 85 e5 00 00 00    	jne    0x40ad1c
40ac37:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40ac3d:	50                   	push   %eax
40ac3e:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40ac42:	ff 15 08 f0 40 00    	call   *0x40f008
40ac48:	85 c0                	test   %eax,%eax
40ac4a:	0f 85 cc 00 00 00    	jne    0x40ad1c
40ac50:	b9 8b 00 00 00       	mov    $0x8b,%ecx
40ac55:	e9 aa 00 00 00       	jmp    0x40ad04
40ac5a:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40ac60:	50                   	push   %eax
40ac61:	ff 74 11 08          	push   0x8(%ecx,%edx,1)
40ac65:	ff 15 08 f0 40 00    	call   *0x40f008
40ac6b:	85 c0                	test   %eax,%eax
40ac6d:	0f 85 a9 00 00 00    	jne    0x40ad1c
40ac73:	8b 8d 94 f9 ff ff    	mov    -0x66c(%ebp),%ecx
40ac79:	8d 85 64 f9 ff ff    	lea    -0x69c(%ebp),%eax
40ac7f:	50                   	push   %eax
40ac80:	8b 46 04             	mov    0x4(%esi),%eax
40ac83:	68 ec 16 40 00       	push   $0x4016ec
40ac88:	ff 74 01 08          	push   0x8(%ecx,%eax,1)
40ac8c:	ff 15 04 f0 40 00    	call   *0x40f004
40ac92:	85 c0                	test   %eax,%eax
40ac94:	74 79                	je     0x40ad0f
40ac96:	b9 a6 00 00 00       	mov    $0xa6,%ecx
40ac9b:	eb 67                	jmp    0x40ad04
40ac9d:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
40aca3:	50                   	push   %eax
40aca4:	ff 74 11 08          	push   0x8(%ecx,%edx,1)