40b87e:	56                   	push   %esi
40b87f:	8b 30                	mov    (%eax),%esi
40b881:	8d 58 04             	lea    0x4(%eax),%ebx
40b884:	8d 04 33             	lea    (%ebx,%esi,1),%eax
40b887:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b88a:	b8 00 20 00 00       	mov    $0x2000,%eax
40b88f:	3b f0                	cmp    %eax,%esi
40b891:	7c 02                	jl     0x40b895
40b893:	8b f0                	mov    %eax,%esi
40b895:	56                   	push   %esi
40b896:	e8 85 0a 00 00       	call   0x40c320
40b89b:	a1 c0 43 42 00       	mov    0x4243c0,%eax
40b8a0:	59                   	pop    %ecx
40b8a1:	3b f0                	cmp    %eax,%esi
40b8a3:	7e 02                	jle    0x40b8a7
40b8a5:	8b f0                	mov    %eax,%esi
40b8a7:	57                   	push   %edi
40b8a8:	33 ff                	xor    %edi,%edi
40b8aa:	85 f6                	test   %esi,%esi
40b8ac:	74 56                	je     0x40b904
40b8ae:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b8b1:	8b 08                	mov    (%eax),%ecx
40b8b3:	83 f9 ff             	cmp    $0xffffffff,%ecx
40b8b6:	74 40                	je     0x40b8f8
40b8b8:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40b8bb:	74 3b                	je     0x40b8f8
40b8bd:	8a 13                	mov    (%ebx),%dl
40b8bf:	f6 c2 01             	test   $0x1,%dl
40b8c2:	74 34                	je     0x40b8f8
40b8c4:	f6 c2 08             	test   $0x8,%dl
40b8c7:	75 0b                	jne    0x40b8d4
40b8c9:	51                   	push   %ecx
40b8ca:	ff 15 14 b1 41 00    	call   *0x41b114
40b8d0:	85 c0                	test   %eax,%eax
40b8d2:	74 21                	je     0x40b8f5
40b8d4:	8b c7                	mov    %edi,%eax
40b8d6:	8b cf                	mov    %edi,%ecx
40b8d8:	83 e0 3f             	and    $0x3f,%eax
40b8db:	c1 f9 06             	sar    $0x6,%ecx
40b8de:	6b d0 30             	imul   $0x30,%eax,%edx
40b8e1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b8e4:	03 14 8d c0 41 42 00 	add    0x4241c0(,%ecx,4),%edx
40b8eb:	8b 00                	mov    (%eax),%eax
40b8ed:	89 42 18             	mov    %eax,0x18(%edx)
40b8f0:	8a 03                	mov    (%ebx),%al
40b8f2:	88 42 28             	mov    %al,0x28(%edx)
40b8f5:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b8f8:	47                   	inc    %edi
40b8f9:	83 c0 04             	add    $0x4,%eax
40b8fc:	43                   	inc    %ebx
40b8fd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b900:	3b fe                	cmp    %esi,%edi
40b902:	75 ad                	jne    0x40b8b1
40b904:	5f                   	pop    %edi
40b905:	5e                   	pop    %esi
40b906:	5b                   	pop    %ebx
40b907:	8b e5                	mov    %ebp,%esp
40b909:	5d                   	pop    %ebp
40b90a:	c3                   	ret
40b90b:	8b ff                	mov    %edi,%edi
40b90d:	53                   	push   %ebx
40b90e:	56                   	push   %esi
40b90f:	57                   	push   %edi
40b910:	33 ff                	xor    %edi,%edi
40b912:	8b c7                	mov    %edi,%eax
40b914:	8b cf                	mov    %edi,%ecx
40b916:	83 e0 3f             	and    $0x3f,%eax
40b919:	c1 f9 06             	sar    $0x6,%ecx
40b91c:	6b f0 30             	imul   $0x30,%eax,%esi
40b91f:	03 34 8d c0 41 42 00 	add    0x4241c0(,%ecx,4),%esi
40b926:	83 7e 18 ff          	cmpl   $0xffffffff,0x18(%esi)
40b92a:	74 0c                	je     0x40b938
40b92c:	83 7e 18 fe          	cmpl   $0xfffffffe,0x18(%esi)
40b930:	74 06                	je     0x40b938
40b932:	80 4e 28 80          	orb    $0x80,0x28(%esi)
40b936:	eb 7b                	jmp    0x40b9b3
40b938:	8b c7                	mov    %edi,%eax
40b93a:	c6 46 28 81          	movb   $0x81,0x28(%esi)
40b93e:	83 e8 00             	sub    $0x0,%eax
40b941:	74 10                	je     0x40b953
40b943:	83 e8 01             	sub    $0x1,%eax
40b946:	74 07                	je     0x40b94f
40b948:	6a f4                	push   $0xfffffff4
40b94a:	83 e8 01             	sub    $0x1,%eax
40b94d:	eb 06                	jmp    0x40b955
40b94f:	6a f5                	push   $0xfffffff5
40b951:	eb 02                	jmp    0x40b955
40b953:	6a f6                	push   $0xfffffff6
40b955:	58                   	pop    %eax
40b956:	50                   	push   %eax
40b957:	ff 15 34 b1 41 00    	call   *0x41b134
40b95d:	8b d8                	mov    %eax,%ebx
40b95f:	83 fb ff             	cmp    $0xffffffff,%ebx
40b962:	74 0d                	je     0x40b971
40b964:	85 db                	test   %ebx,%ebx
40b966:	74 09                	je     0x40b971
40b968:	53                   	push   %ebx
40b969:	ff 15 14 b1 41 00    	call   *0x41b114
40b96f:	eb 02                	jmp    0x40b973
40b971:	33 c0                	xor    %eax,%eax
40b973:	85 c0                	test   %eax,%eax
40b975:	74 1e                	je     0x40b995
40b977:	25 ff 00 00 00       	and    $0xff,%eax
40b97c:	89 5e 18             	mov    %ebx,0x18(%esi)
40b97f:	83 f8 02             	cmp    $0x2,%eax
40b982:	75 06                	jne    0x40b98a
40b984:	80 4e 28 40          	orb    $0x40,0x28(%esi)
40b988:	eb 29                	jmp    0x40b9b3
40b98a:	83 f8 03             	cmp    $0x3,%eax
40b98d:	75 24                	jne    0x40b9b3
40b98f:	80 4e 28 08          	orb    $0x8,0x28(%esi)
40b993:	eb 1e                	jmp    0x40b9b3
40b995:	80 4e 28 40          	orb    $0x40,0x28(%esi)
40b999:	c7 46 18 fe ff ff ff 	movl   $0xfffffffe,0x18(%esi)
40b9a0:	a1 a8 41 42 00       	mov    0x4241a8,%eax
40b9a5:	85 c0                	test   %eax,%eax
40b9a7:	74 0a                	je     0x40b9b3
40b9a9:	8b 04 b8             	mov    (%eax,%edi,4),%eax
40b9ac:	c7 40 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%eax)
40b9b3:	47                   	inc    %edi
40b9b4:	83 ff 03             	cmp    $0x3,%edi
40b9b7:	0f 85 55 ff ff ff    	jne    0x40b912
40b9bd:	5f                   	pop    %edi
40b9be:	5e                   	pop    %esi
40b9bf:	5b                   	pop    %ebx
40b9c0:	c3                   	ret
40b9c1:	6a 0c                	push   $0xc
40b9c3:	68 20 1d 42 00       	push   $0x421d20
40b9c8:	e8 83 81 ff ff       	call   0x403b50
40b9cd:	6a 07                	push   $0x7
40b9cf:	e8 d1 34 00 00       	call   0x40eea5
40b9d4:	59                   	pop    %ecx
40b9d5:	33 db                	xor    %ebx,%ebx
40b9d7:	88 5d e7             	mov    %bl,-0x19(%ebp)
40b9da:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40b9dd:	53                   	push   %ebx
40b9de:	e8 3d 09 00 00       	call   0x40c320
40b9e3:	59                   	pop    %ecx
40b9e4:	85 c0                	test   %eax,%eax
40b9e6:	75 0f                	jne    0x40b9f7
40b9e8:	e8 68 fe ff ff       	call   0x40b855
40b9ed:	e8 19 ff ff ff       	call   0x40b90b
40b9f2:	b3 01                	mov    $0x1,%bl
40b9f4:	88 5d e7             	mov    %bl,-0x19(%ebp)
40b9f7:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40b9fe:	e8 0b 00 00 00       	call   0x40ba0e
40ba03:	8a c3                	mov    %bl,%al
40ba05:	e8 8c 81 ff ff       	call   0x403b96
40ba0a:	c3                   	ret
40ba0b:	8a 5d e7             	mov    -0x19(%ebp),%bl
40ba0e:	6a 07                	push   $0x7
40ba10:	e8 d8 34 00 00       	call   0x40eeed
40ba15:	59                   	pop    %ecx
40ba16:	c3                   	ret
40ba17:	8b ff                	mov    %edi,%edi
40ba19:	56                   	push   %esi
40ba1a:	33 f6                	xor    %esi,%esi
40ba1c:	8b 86 c0 41 42 00    	mov    0x4241c0(%esi),%eax
40ba22:	85 c0                	test   %eax,%eax
40ba24:	74 0e                	je     0x40ba34
40ba26:	50                   	push   %eax
40ba27:	e8 bf 08 00 00       	call   0x40c2eb
40ba2c:	83 a6 c0 41 42 00 00 	andl   $0x0,0x4241c0(%esi)
40ba33:	59                   	pop    %ecx
40ba34:	83 c6 04             	add    $0x4,%esi
40ba37:	81 fe 00 02 00 00    	cmp    $0x200,%esi
40ba3d:	72 dd                	jb     0x40ba1c
40ba3f:	b0 01                	mov    $0x1,%al
40ba41:	5e                   	pop    %esi
40ba42:	c3                   	ret
40ba43:	8b ff                	mov    %edi,%edi
40ba45:	55                   	push   %ebp
40ba46:	8b ec                	mov    %esp,%ebp
40ba48:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ba4b:	0f b7 01             	movzwl (%ecx),%eax
40ba4e:	66 85 c0             	test   %ax,%ax
40ba51:	74 19                	je     0x40ba6c
40ba53:	66 83 79 02 3a       	cmpw   $0x3a,0x2(%ecx)
40ba58:	75 12                	jne    0x40ba6c
40ba5a:	83 f8 61             	cmp    $0x61,%eax
40ba5d:	72 08                	jb     0x40ba67
40ba5f:	83 f8 7a             	cmp    $0x7a,%eax
40ba62:	77 03                	ja     0x40ba67
40ba64:	83 e8 20             	sub    $0x20,%eax
40ba67:	83 c0 c0             	add    $0xffffffc0,%eax
40ba6a:	5d                   	pop    %ebp
40ba6b:	c3                   	ret
40ba6c:	33 c0                	xor    %eax,%eax
40ba6e:	5d                   	pop    %ebp
40ba6f:	c3                   	ret
40ba70:	8b ff                	mov    %edi,%edi
40ba72:	55                   	push   %ebp
40ba73:	8b ec                	mov    %esp,%ebp
40ba75:	81 ec 10 02 00 00    	sub    $0x210,%esp
40ba7b:	a1 0c 30 42 00       	mov    0x42300c,%eax
40ba80:	33 c5                	xor    %ebp,%eax
40ba82:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ba85:	57                   	push   %edi
40ba86:	33 c0                	xor    %eax,%eax
40ba88:	33 ff                	xor    %edi,%edi
40ba8a:	68 08 02 00 00       	push   $0x208
40ba8f:	66 89 85 f0 fd ff ff 	mov    %ax,-0x210(%ebp)
40ba96:	8d 85 f2 fd ff ff    	lea    -0x20e(%ebp),%eax
40ba9c:	57                   	push   %edi
40ba9d:	50                   	push   %eax
40ba9e:	e8 bd 8f ff ff       	call   0x404a60
40baa3:	83 c4 0c             	add    $0xc,%esp
40baa6:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
40baac:	50                   	push   %eax
40baad:	68 05 01 00 00       	push   $0x105
40bab2:	ff 15 48 b1 41 00    	call   *0x41b148
40bab8:	3d 04 01 00 00       	cmp    $0x104,%eax
40babd:	77 0f                	ja     0x40bace
40babf:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
40bac5:	50                   	push   %eax
40bac6:	e8 78 ff ff ff       	call   0x40ba43
40bacb:	59                   	pop    %ecx
40bacc:	eb 42                	jmp    0x40bb10
40bace:	53                   	push   %ebx
40bacf:	56                   	push   %esi
40bad0:	8d 58 01             	lea    0x1(%eax),%ebx
40bad3:	6a 02                	push   $0x2
40bad5:	53                   	push   %ebx
40bad6:	e8 d1 dd ff ff       	call   0x4098ac
40badb:	8b f0                	mov    %eax,%esi
40badd:	59                   	pop    %ecx
40bade:	59                   	pop    %ecx
40badf:	85 f6                	test   %esi,%esi
40bae1:	74 0c                	je     0x40baef
40bae3:	56                   	push   %esi
40bae4:	53                   	push   %ebx
40bae5:	ff 15 48 b1 41 00    	call   *0x41b148
40baeb:	85 c0                	test   %eax,%eax
40baed:	75 0d                	jne    0x40bafc
40baef:	e8 13 c2 ff ff       	call   0x407d07
40baf4:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40bafa:	eb 09                	jmp    0x40bb05
40bafc:	56                   	push   %esi
40bafd:	e8 41 ff ff ff       	call   0x40ba43
40bb02:	59                   	pop    %ecx
40bb03:	8b f8                	mov    %eax,%edi
40bb05:	56                   	push   %esi
40bb06:	e8 19 dd ff ff       	call   0x409824
40bb0b:	59                   	pop    %ecx
40bb0c:	5e                   	pop    %esi
40bb0d:	8b c7                	mov    %edi,%eax
40bb0f:	5b                   	pop    %ebx
40bb10:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40bb13:	33 cd                	xor    %ebp,%ecx
40bb15:	5f                   	pop    %edi
40bb16:	e8 3b 74 ff ff       	call   0x402f56
40bb1b:	8b e5                	mov    %ebp,%esp
40bb1d:	5d                   	pop    %ebp
40bb1e:	c3                   	ret
40bb1f:	8b ff                	mov    %edi,%edi
40bb21:	55                   	push   %ebp
40bb22:	8b ec                	mov    %esp,%ebp
40bb24:	57                   	push   %edi
40bb25:	33 ff                	xor    %edi,%edi
40bb27:	57                   	push   %edi
40bb28:	57                   	push   %edi
40bb29:	57                   	push   %edi
40bb2a:	ff 75 08             	push   0x8(%ebp)
40bb2d:	ff 15 4c b1 41 00    	call   *0x41b14c
40bb33:	85 c0                	test   %eax,%eax
40bb35:	75 11                	jne    0x40bb48
40bb37:	ff 15 48 b0 41 00    	call   *0x41b048
40bb3d:	50                   	push   %eax
40bb3e:	e8 8e c1 ff ff       	call   0x407cd1
40bb43:	59                   	pop    %ecx
40bb44:	33 c0                	xor    %eax,%eax
40bb46:	eb 4a                	jmp    0x40bb92
40bb48:	53                   	push   %ebx
40bb49:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40bb4c:	56                   	push   %esi
40bb4d:	3b d8                	cmp    %eax,%ebx
40bb4f:	77 02                	ja     0x40bb53
40bb51:	8b d8                	mov    %eax,%ebx
40bb53:	6a 02                	push   $0x2
40bb55:	53                   	push   %ebx
40bb56:	e8 c7 7b 00 00       	call   0x413722
40bb5b:	8b f0                	mov    %eax,%esi
40bb5d:	59                   	pop    %ecx
40bb5e:	59                   	pop    %ecx
40bb5f:	85 f6                	test   %esi,%esi
40bb61:	75 0d                	jne    0x40bb70
40bb63:	e8 9f c1 ff ff       	call   0x407d07
40bb68:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40bb6e:	eb 17                	jmp    0x40bb87
40bb70:	53                   	push   %ebx
40bb71:	ff 75 08             	push   0x8(%ebp)
40bb74:	56                   	push   %esi
40bb75:	e8 1b 00 00 00       	call   0x40bb95
40bb7a:	83 c4 0c             	add    $0xc,%esp
40bb7d:	85 c0                	test   %eax,%eax
40bb7f:	74 06                	je     0x40bb87
40bb81:	8b ce                	mov    %esi,%ecx
40bb83:	8b f7                	mov    %edi,%esi
40bb85:	8b f9                	mov    %ecx,%edi
40bb87:	56                   	push   %esi
40bb88:	e8 d2 be ff ff       	call   0x407a5f
40bb8d:	59                   	pop    %ecx
40bb8e:	5e                   	pop    %esi
40bb8f:	8b c7                	mov    %edi,%eax
40bb91:	5b                   	pop    %ebx
40bb92:	5f                   	pop    %edi
40bb93:	5d                   	pop    %ebp
40bb94:	c3                   	ret
40bb95:	8b ff                	mov    %edi,%edi
40bb97:	55                   	push   %ebp
40bb98:	8b ec                	mov    %esp,%ebp
40bb9a:	56                   	push   %esi
40bb9b:	8b 75 10             	mov    0x10(%ebp),%esi
40bb9e:	85 f6                	test   %esi,%esi
40bba0:	75 14                	jne    0x40bbb6
40bba2:	e8 60 c1 ff ff       	call   0x407d07
40bba7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40bbad:	e8 7c c0 ff ff       	call   0x407c2e
40bbb2:	33 c0                	xor    %eax,%eax
40bbb4:	eb 3b                	jmp    0x40bbf1
40bbb6:	83 fe ff             	cmp    $0xffffffff,%esi
40bbb9:	76 0d                	jbe    0x40bbc8
40bbbb:	e8 47 c1 ff ff       	call   0x407d07
40bbc0:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40bbc6:	eb ea                	jmp    0x40bbb2
40bbc8:	6a 00                	push   $0x0
40bbca:	ff 75 08             	push   0x8(%ebp)
40bbcd:	56                   	push   %esi
40bbce:	ff 75 0c             	push   0xc(%ebp)
40bbd1:	ff 15 4c b1 41 00    	call   *0x41b14c
40bbd7:	3b c6                	cmp    %esi,%eax
40bbd9:	73 e0                	jae    0x40bbbb
40bbdb:	85 c0                	test   %eax,%eax
40bbdd:	75 0f                	jne    0x40bbee
40bbdf:	ff 15 48 b0 41 00    	call   *0x41b048
40bbe5:	50                   	push   %eax
40bbe6:	e8 e6 c0 ff ff       	call   0x407cd1
40bbeb:	59                   	pop    %ecx
40bbec:	eb c4                	jmp    0x40bbb2
40bbee:	8b 45 08             	mov    0x8(%ebp),%eax
40bbf1:	5e                   	pop    %esi
40bbf2:	5d                   	pop    %ebp
40bbf3:	c3                   	ret
40bbf4:	8b ff                	mov    %edi,%edi
40bbf6:	55                   	push   %ebp
40bbf7:	8b ec                	mov    %esp,%ebp
40bbf9:	8b 45 0c             	mov    0xc(%ebp),%eax
40bbfc:	85 c0                	test   %eax,%eax
40bbfe:	74 2f                	je     0x40bc2f
40bc00:	33 c9                	xor    %ecx,%ecx