40b7fc:	8b ec                	mov    %esp,%ebp
40b7fe:	57                   	push   %edi
40b7ff:	8b 7d 08             	mov    0x8(%ebp),%edi
40b802:	85 ff                	test   %edi,%edi
40b804:	75 0b                	jne    0x40b811
40b806:	ff 75 0c             	push   0xc(%ebp)
40b809:	e8 1d c0 ff ff       	call   0x40782b
40b80e:	59                   	pop    %ecx
40b80f:	eb 24                	jmp    0x40b835
40b811:	56                   	push   %esi
40b812:	8b 75 0c             	mov    0xc(%ebp),%esi
40b815:	85 f6                	test   %esi,%esi
40b817:	75 09                	jne    0x40b822
40b819:	57                   	push   %edi
40b81a:	e8 5a c0 ff ff       	call   0x407879
40b81f:	59                   	pop    %ecx
40b820:	eb 10                	jmp    0x40b832
40b822:	83 fe e0             	cmp    $0xffffffe0,%esi
40b825:	76 25                	jbe    0x40b84c
40b827:	e8 24 c1 ff ff       	call   0x407950
40b82c:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40b832:	33 c0                	xor    %eax,%eax
40b834:	5e                   	pop    %esi
40b835:	5f                   	pop    %edi
40b836:	5d                   	pop    %ebp
40b837:	c3                   	ret
40b838:	e8 0b b2 ff ff       	call   0x406a48
40b83d:	85 c0                	test   %eax,%eax
40b83f:	74 e6                	je     0x40b827
40b841:	56                   	push   %esi
40b842:	e8 60 a5 ff ff       	call   0x405da7
40b847:	59                   	pop    %ecx
40b848:	85 c0                	test   %eax,%eax
40b84a:	74 db                	je     0x40b827
40b84c:	56                   	push   %esi
40b84d:	57                   	push   %edi
40b84e:	6a 00                	push   $0x0
40b850:	ff 35 6c 73 41 00    	push   0x41736c
40b856:	ff 15 f0 f0 40 00    	call   *0x40f0f0
40b85c:	85 c0                	test   %eax,%eax
40b85e:	74 d8                	je     0x40b838
40b860:	eb d2                	jmp    0x40b834
40b862:	6a 0c                	push   $0xc
40b864:	68 b8 4c 41 00       	push   $0x414cb8
40b869:	e8 a2 7b ff ff       	call   0x403410
40b86e:	33 f6                	xor    %esi,%esi
40b870:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40b873:	8b 45 08             	mov    0x8(%ebp),%eax
40b876:	ff 30                	push   (%eax)
40b878:	e8 9e d8 ff ff       	call   0x40911b
40b87d:	59                   	pop    %ecx
40b87e:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b881:	8b 45 0c             	mov    0xc(%ebp),%eax
40b884:	8b 00                	mov    (%eax),%eax
40b886:	8b 38                	mov    (%eax),%edi
40b888:	8b d7                	mov    %edi,%edx
40b88a:	c1 fa 06             	sar    $0x6,%edx
40b88d:	8b c7                	mov    %edi,%eax
40b88f:	83 e0 3f             	and    $0x3f,%eax
40b892:	6b c8 38             	imul   $0x38,%eax,%ecx
40b895:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b89c:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40b8a1:	74 21                	je     0x40b8c4
40b8a3:	57                   	push   %edi
40b8a4:	e8 49 d9 ff ff       	call   0x4091f2
40b8a9:	59                   	pop    %ecx
40b8aa:	50                   	push   %eax
40b8ab:	ff 15 f4 f0 40 00    	call   *0x40f0f4
40b8b1:	85 c0                	test   %eax,%eax
40b8b3:	75 1d                	jne    0x40b8d2
40b8b5:	ff 15 58 f0 40 00    	call   *0x40f058
40b8bb:	8b f0                	mov    %eax,%esi
40b8bd:	e8 7b c0 ff ff       	call   0x40793d
40b8c2:	89 30                	mov    %esi,(%eax)
40b8c4:	e8 87 c0 ff ff       	call   0x407950
40b8c9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b8cf:	83 ce ff             	or     $0xffffffff,%esi
40b8d2:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40b8d5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40b8dc:	e8 17 00 00 00       	call   0x40b8f8
40b8e1:	8b c6                	mov    %esi,%eax
40b8e3:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b8e6:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b8ed:	59                   	pop    %ecx
40b8ee:	5f                   	pop    %edi
40b8ef:	5e                   	pop    %esi
40b8f0:	5b                   	pop    %ebx
40b8f1:	c9                   	leave
40b8f2:	c2 0c 00             	ret    $0xc
40b8f5:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40b8f8:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b8fb:	ff 31                	push   (%ecx)
40b8fd:	e8 3c d8 ff ff       	call   0x40913e
40b902:	59                   	pop    %ecx
40b903:	c3                   	ret
40b904:	8b ff                	mov    %edi,%edi
40b906:	55                   	push   %ebp
40b907:	8b ec                	mov    %esp,%ebp
40b909:	83 ec 10             	sub    $0x10,%esp
40b90c:	56                   	push   %esi
40b90d:	8b 75 08             	mov    0x8(%ebp),%esi
40b910:	83 fe fe             	cmp    $0xfffffffe,%esi
40b913:	75 0d                	jne    0x40b922
40b915:	e8 36 c0 ff ff       	call   0x407950
40b91a:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b920:	eb 59                	jmp    0x40b97b
40b922:	85 f6                	test   %esi,%esi
40b924:	78 45                	js     0x40b96b
40b926:	3b 35 78 72 41 00    	cmp    0x417278,%esi
40b92c:	73 3d                	jae    0x40b96b
40b92e:	8b c6                	mov    %esi,%eax
40b930:	8b d6                	mov    %esi,%edx
40b932:	83 e0 3f             	and    $0x3f,%eax
40b935:	c1 fa 06             	sar    $0x6,%edx
40b938:	6b c8 38             	imul   $0x38,%eax,%ecx
40b93b:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b942:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40b947:	74 22                	je     0x40b96b
40b949:	8d 45 08             	lea    0x8(%ebp),%eax
40b94c:	89 75 f8             	mov    %esi,-0x8(%ebp)
40b94f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40b952:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40b955:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b958:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b95b:	50                   	push   %eax
40b95c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b95f:	50                   	push   %eax
40b960:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b963:	50                   	push   %eax
40b964:	e8 f9 fe ff ff       	call   0x40b862
40b969:	eb 13                	jmp    0x40b97e
40b96b:	e8 e0 bf ff ff       	call   0x407950
40b970:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b976:	e8 a1 a3 ff ff       	call   0x405d1c
40b97b:	83 c8 ff             	or     $0xffffffff,%eax
40b97e:	5e                   	pop    %esi
40b97f:	c9                   	leave
40b980:	c3                   	ret
40b981:	8b ff                	mov    %edi,%edi
40b983:	55                   	push   %ebp
40b984:	8b ec                	mov    %esp,%ebp
40b986:	6a ff                	push   $0xffffffff
40b988:	68 6d ef 40 00       	push   $0x40ef6d
40b98d:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40b993:	50                   	push   %eax
40b994:	83 ec 74             	sub    $0x74,%esp
40b997:	a1 14 60 41 00       	mov    0x416014,%eax
40b99c:	33 c5                	xor    %ebp,%eax
40b99e:	89 45 f0             	mov    %eax,-0x10(%ebp)
40b9a1:	53                   	push   %ebx
40b9a2:	56                   	push   %esi
40b9a3:	57                   	push   %edi
40b9a4:	50                   	push   %eax
40b9a5:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b9a8:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40b9ae:	8b 45 0c             	mov    0xc(%ebp),%eax
40b9b1:	8b d0                	mov    %eax,%edx
40b9b3:	8b 75 10             	mov    0x10(%ebp),%esi
40b9b6:	83 e0 3f             	and    $0x3f,%eax
40b9b9:	8b 5d 18             	mov    0x18(%ebp),%ebx
40b9bc:	6b c8 38             	imul   $0x38,%eax,%ecx
40b9bf:	c1 fa 06             	sar    $0x6,%edx
40b9c2:	89 75 a0             	mov    %esi,-0x60(%ebp)
40b9c5:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40b9c8:	89 55 bc             	mov    %edx,-0x44(%ebp)
40b9cb:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b9d2:	89 4d b0             	mov    %ecx,-0x50(%ebp)
40b9d5:	8b 44 01 18          	mov    0x18(%ecx,%eax,1),%eax
40b9d9:	89 45 9c             	mov    %eax,-0x64(%ebp)
40b9dc:	8b 45 14             	mov    0x14(%ebp),%eax
40b9df:	03 c6                	add    %esi,%eax
40b9e1:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b9e4:	ff 15 f8 f0 40 00    	call   *0x40f0f8
40b9ea:	80 7b 14 00          	cmpb   $0x0,0x14(%ebx)
40b9ee:	89 45 94             	mov    %eax,-0x6c(%ebp)
40b9f1:	75 07                	jne    0x40b9fa
40b9f3:	8b cb                	mov    %ebx,%ecx
40b9f5:	e8 56 b6 ff ff       	call   0x407050
40b9fa:	8b 43 0c             	mov    0xc(%ebx),%eax
40b9fd:	8b 75 08             	mov    0x8(%ebp),%esi
40ba00:	8b fe                	mov    %esi,%edi
40ba02:	8b 48 08             	mov    0x8(%eax),%ecx
40ba05:	33 c0                	xor    %eax,%eax
40ba07:	ab                   	stos   %eax,%es:(%edi)
40ba08:	89 4d 90             	mov    %ecx,-0x70(%ebp)
40ba0b:	ab                   	stos   %eax,%es:(%edi)
40ba0c:	ab                   	stos   %eax,%es:(%edi)
40ba0d:	8b 45 a0             	mov    -0x60(%ebp),%eax
40ba10:	8b d0                	mov    %eax,%edx
40ba12:	89 55 d4             	mov    %edx,-0x2c(%ebp)
40ba15:	3b 45 ac             	cmp    -0x54(%ebp),%eax
40ba18:	0f 83 09 03 00 00    	jae    0x40bd27
40ba1e:	8b 7d b0             	mov    -0x50(%ebp),%edi
40ba21:	33 db                	xor    %ebx,%ebx
40ba23:	89 5d b8             	mov    %ebx,-0x48(%ebp)
40ba26:	8a 02                	mov    (%edx),%al
40ba28:	88 45 d3             	mov    %al,-0x2d(%ebp)
40ba2b:	8b 45 bc             	mov    -0x44(%ebp),%eax
40ba2e:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40ba31:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
40ba38:	81 f9 e9 fd 00 00    	cmp    $0xfde9,%ecx
40ba3e:	0f 85 2c 01 00 00    	jne    0x40bb70
40ba44:	8b 04 85 78 70 41 00 	mov    0x417078(,%eax,4),%eax
40ba4b:	8b cb                	mov    %ebx,%ecx
40ba4d:	83 c0 2e             	add    $0x2e,%eax
40ba50:	03 c7                	add    %edi,%eax
40ba52:	89 45 b8             	mov    %eax,-0x48(%ebp)
40ba55:	80 38 00             	cmpb   $0x0,(%eax)
40ba58:	74 07                	je     0x40ba61
40ba5a:	41                   	inc    %ecx
40ba5b:	40                   	inc    %eax
40ba5c:	83 f9 05             	cmp    $0x5,%ecx
40ba5f:	7c f4                	jl     0x40ba55
40ba61:	8b 7d ac             	mov    -0x54(%ebp),%edi
40ba64:	2b fa                	sub    %edx,%edi
40ba66:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40ba69:	85 c9                	test   %ecx,%ecx
40ba6b:	0f 8e a4 00 00 00    	jle    0x40bb15
40ba71:	8b 45 b8             	mov    -0x48(%ebp),%eax
40ba74:	0f b6 00             	movzbl (%eax),%eax
40ba77:	0f be 80 58 67 41 00 	movsbl 0x416758(%eax),%eax
40ba7e:	40                   	inc    %eax
40ba7f:	89 45 c8             	mov    %eax,-0x38(%ebp)
40ba82:	2b c1                	sub    %ecx,%eax
40ba84:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40ba87:	3b c7                	cmp    %edi,%eax
40ba89:	0f 8f 21 02 00 00    	jg     0x40bcb0
40ba8f:	8b fb                	mov    %ebx,%edi
40ba91:	8b 5d b8             	mov    -0x48(%ebp),%ebx
40ba94:	8a 03                	mov    (%ebx),%al
40ba96:	88 44 3d e8          	mov    %al,-0x18(%ebp,%edi,1)
40ba9a:	47                   	inc    %edi
40ba9b:	43                   	inc    %ebx
40ba9c:	3b f9                	cmp    %ecx,%edi
40ba9e:	7c f4                	jl     0x40ba94
40baa0:	8b 75 b4             	mov    -0x4c(%ebp),%esi
40baa3:	33 db                	xor    %ebx,%ebx
40baa5:	85 f6                	test   %esi,%esi
40baa7:	7e 13                	jle    0x40babc
40baa9:	56                   	push   %esi
40baaa:	8d 45 e8             	lea    -0x18(%ebp),%eax
40baad:	03 c1                	add    %ecx,%eax
40baaf:	52                   	push   %edx
40bab0:	50                   	push   %eax
40bab1:	e8 9a 99 ff ff       	call   0x405450
40bab6:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40bab9:	83 c4 0c             	add    $0xc,%esp
40babc:	8b 7d b0             	mov    -0x50(%ebp),%edi
40babf:	8b d3                	mov    %ebx,%edx
40bac1:	8b 75 bc             	mov    -0x44(%ebp),%esi
40bac4:	8b 04 b5 78 70 41 00 	mov    0x417078(,%esi,4),%eax
40bacb:	03 c7                	add    %edi,%eax
40bacd:	88 5c 10 2e          	mov    %bl,0x2e(%eax,%edx,1)
40bad1:	42                   	inc    %edx
40bad2:	3b d1                	cmp    %ecx,%edx
40bad4:	7c ee                	jl     0x40bac4
40bad6:	ff 75 c4             	push   -0x3c(%ebp)
40bad9:	8b 75 08             	mov    0x8(%ebp),%esi
40badc:	8d 45 e8             	lea    -0x18(%ebp),%eax
40badf:	89 45 98             	mov    %eax,-0x68(%ebp)
40bae2:	8d 4d 88             	lea    -0x78(%ebp),%ecx
40bae5:	33 c0                	xor    %eax,%eax
40bae7:	89 5d 88             	mov    %ebx,-0x78(%ebp)
40baea:	83 7d c8 04          	cmpl   $0x4,-0x38(%ebp)
40baee:	51                   	push   %ecx
40baef:	0f 94 c0             	sete   %al
40baf2:	89 5d 8c             	mov    %ebx,-0x74(%ebp)
40baf5:	40                   	inc    %eax
40baf6:	50                   	push   %eax
40baf7:	89 45 cc             	mov    %eax,-0x34(%ebp)
40bafa:	8d 45 98             	lea    -0x68(%ebp),%eax
40bafd:	50                   	push   %eax
40bafe:	8d 45 c0             	lea    -0x40(%ebp),%eax
40bb01:	50                   	push   %eax
40bb02:	e8 2a 0c 00 00       	call   0x40c731
40bb07:	83 c4 14             	add    $0x14,%esp
40bb0a:	83 f8 ff             	cmp    $0xffffffff,%eax
40bb0d:	0f 84 14 02 00 00    	je     0x40bd27
40bb13:	eb 4f                	jmp    0x40bb64
40bb15:	0f b6 02             	movzbl (%edx),%eax
40bb18:	0f be 88 58 67 41 00 	movsbl 0x416758(%eax),%ecx
40bb1f:	41                   	inc    %ecx
40bb20:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40bb23:	3b cf                	cmp    %edi,%ecx
40bb25:	0f 8f b2 01 00 00    	jg     0x40bcdd
40bb2b:	ff 75 c4             	push   -0x3c(%ebp)
40bb2e:	33 c0                	xor    %eax,%eax
40bb30:	89 5d 80             	mov    %ebx,-0x80(%ebp)
40bb33:	83 f9 04             	cmp    $0x4,%ecx
40bb36:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
40bb39:	8d 4d 80             	lea    -0x80(%ebp),%ecx
40bb3c:	89 55 c8             	mov    %edx,-0x38(%ebp)
40bb3f:	0f 94 c0             	sete   %al
40bb42:	40                   	inc    %eax
40bb43:	51                   	push   %ecx
40bb44:	50                   	push   %eax
40bb45:	89 45 cc             	mov    %eax,-0x34(%ebp)
40bb48:	8d 45 c8             	lea    -0x38(%ebp),%eax
40bb4b:	50                   	push   %eax
40bb4c:	8d 45 c0             	lea    -0x40(%ebp),%eax
40bb4f:	50                   	push   %eax
40bb50:	e8 dc 0b 00 00       	call   0x40c731
40bb55:	83 c4 14             	add    $0x14,%esp
40bb58:	83 f8 ff             	cmp    $0xffffffff,%eax
40bb5b:	0f 84 c6 01 00 00    	je     0x40bd27
40bb61:	8b 7d b0             	mov    -0x50(%ebp),%edi
40bb64:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40bb67:	03 45 b4             	add    -0x4c(%ebp),%eax
40bb6a:	48                   	dec    %eax
40bb6b:	e9 8f 00 00 00       	jmp    0x40bbff
40bb70:	8b 0c 85 78 70 41 00 	mov    0x417078(,%eax,4),%ecx
40bb77:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40bb7a:	8a 64 39 2d          	mov    0x2d(%ecx,%edi,1),%ah
40bb7e:	f6 c4 04             	test   $0x4,%ah
40bb81:	74 1e                	je     0x40bba1
40bb83:	8a 44 39 2e          	mov    0x2e(%ecx,%edi,1),%al
40bb87:	80 e4 fb             	and    $0xfb,%ah
40bb8a:	ff 75 c4             	push   -0x3c(%ebp)
40bb8d:	88 45 e0             	mov    %al,-0x20(%ebp)
40bb90:	8a 02                	mov    (%edx),%al
40bb92:	88 45 e1             	mov    %al,-0x1f(%ebp)
40bb95:	88 64 39 2d          	mov    %ah,0x2d(%ecx,%edi,1)
40bb99:	8d 45 e0             	lea    -0x20(%ebp),%eax
40bb9c:	6a 02                	push   $0x2
40bb9e:	50                   	push   %eax
40bb9f:	eb 46                	jmp    0x40bbe7
40bba1:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40bba4:	0f b6 0a             	movzbl (%edx),%ecx
40bba7:	8b 40 0c             	mov    0xc(%eax),%eax
40bbaa:	8b 00                	mov    (%eax),%eax
40bbac:	66 39 1c 48          	cmp    %bx,(%eax,%ecx,2)
40bbb0:	7d 2f                	jge    0x40bbe1
40bbb2:	8d 42 01             	lea    0x1(%edx),%eax
40bbb5:	89 45 c8             	mov    %eax,-0x38(%ebp)
40bbb8:	3b 45 ac             	cmp    -0x54(%ebp),%eax
40bbbb:	0f 83 3d 01 00 00    	jae    0x40bcfe
40bbc1:	ff 75 c4             	push   -0x3c(%ebp)
40bbc4:	8d 45 c0             	lea    -0x40(%ebp),%eax
40bbc7:	6a 02                	push   $0x2
40bbc9:	52                   	push   %edx
40bbca:	50                   	push   %eax
40bbcb:	e8 f6 f0 ff ff       	call   0x40acc6
40bbd0:	83 c4 10             	add    $0x10,%esp
40bbd3:	83 f8 ff             	cmp    $0xffffffff,%eax
40bbd6:	0f 84 4b 01 00 00    	je     0x40bd27
40bbdc:	8b 45 c8             	mov    -0x38(%ebp),%eax
40bbdf:	eb 1e                	jmp    0x40bbff
40bbe1:	ff 75 c4             	push   -0x3c(%ebp)
40bbe4:	6a 01                	push   $0x1
40bbe6:	52                   	push   %edx