40b894:	8d 8e 80 18 00 00    	lea    0x1880(%esi),%ecx
40b89a:	01 01                	add    %eax,(%ecx)
40b89c:	11 51 04             	adc    %edx,0x4(%ecx)
40b89f:	01 7d f8             	add    %edi,-0x8(%ebp)
40b8a2:	01 7d fc             	add    %edi,-0x4(%ebp)
40b8a5:	29 7d 0c             	sub    %edi,0xc(%ebp)
40b8a8:	29 46 20             	sub    %eax,0x20(%esi)
40b8ab:	8b 46 20             	mov    0x20(%esi),%eax
40b8ae:	19 56 24             	sbb    %edx,0x24(%esi)
40b8b1:	0b 46 24             	or     0x24(%esi),%eax
40b8b4:	75 27                	jne    0x40b8dd
40b8b6:	38 86 5f 18 00 00    	cmp    %al,0x185f(%esi)
40b8bc:	74 1f                	je     0x40b8dd
40b8be:	0f b7 86 5c 18 00 00 	movzwl 0x185c(%esi),%eax
40b8c5:	50                   	push   %eax
40b8c6:	6a 01                	push   $0x1
40b8c8:	56                   	push   %esi
40b8c9:	53                   	push   %ebx
40b8ca:	e8 6d ce 00 00       	call   0x41873c
40b8cf:	84 c0                	test   %al,%al
40b8d1:	74 70                	je     0x40b943
40b8d3:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40b8d7:	0f 87 35 ff ff ff    	ja     0x40b812
40b8dd:	8b 46 2c             	mov    0x2c(%esi),%eax
40b8e0:	85 c0                	test   %eax,%eax
40b8e2:	74 2d                	je     0x40b911
40b8e4:	8b 88 20 a2 00 00    	mov    0xa220(%eax),%ecx
40b8ea:	ff b6 6c 18 00 00    	push   0x186c(%esi)
40b8f0:	03 8e 80 18 00 00    	add    0x1880(%esi),%ecx
40b8f6:	8b 80 24 a2 00 00    	mov    0xa224(%eax),%eax
40b8fc:	ff b6 68 18 00 00    	push   0x1868(%esi)
40b902:	13 86 84 18 00 00    	adc    0x1884(%esi),%eax
40b908:	50                   	push   %eax
40b909:	51                   	push   %ecx
40b90a:	8b ce                	mov    %esi,%ecx
40b90c:	e8 80 fd ff ff       	call   0x40b691
40b911:	83 ff ff             	cmp    $0xffffffff,%edi
40b914:	74 1b                	je     0x40b931
40b916:	80 be cd 3a 00 00 00 	cmpb   $0x0,0x3acd(%esi)
40b91d:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b920:	74 0f                	je     0x40b931
40b922:	57                   	push   %edi
40b923:	ff 75 08             	push   0x8(%ebp)
40b926:	8d 8e 4c 0c 00 00    	lea    0xc4c(%esi),%ecx
40b92c:	e8 ef a6 ff ff       	call   0x406020
40b931:	e8 3e 52 00 00       	call   0x410b74
40b936:	8b c7                	mov    %edi,%eax
40b938:	5f                   	pop    %edi
40b939:	5e                   	pop    %esi
40b93a:	5b                   	pop    %ebx
40b93b:	c9                   	leave
40b93c:	c2 08 00             	ret    $0x8
40b93f:	33 c0                	xor    %eax,%eax
40b941:	eb f5                	jmp    0x40b938
40b943:	c6 86 60 18 00 00 01 	movb   $0x1,0x1860(%esi)
40b94a:	83 c8 ff             	or     $0xffffffff,%eax
40b94d:	eb e9                	jmp    0x40b938
40b94f:	53                   	push   %ebx
40b950:	8b 5c 24 08          	mov    0x8(%esp),%ebx
40b954:	56                   	push   %esi
40b955:	8b f1                	mov    %ecx,%esi
40b957:	80 7e 0c 00          	cmpb   $0x0,0xc(%esi)
40b95b:	57                   	push   %edi
40b95c:	8b 7c 24 14          	mov    0x14(%esp),%edi
40b960:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40b963:	89 7e 18             	mov    %edi,0x18(%esi)
40b966:	74 1a                	je     0x40b982
40b968:	3b 7e 10             	cmp    0x10(%esi),%edi
40b96b:	77 25                	ja     0x40b992
40b96d:	57                   	push   %edi
40b96e:	53                   	push   %ebx
40b96f:	ff 76 14             	push   0x14(%esi)
40b972:	e8 f9 02 01 00       	call   0x41bc70
40b977:	01 7e 14             	add    %edi,0x14(%esi)
40b97a:	83 c4 0c             	add    $0xc,%esp
40b97d:	29 7e 10             	sub    %edi,0x10(%esi)
40b980:	eb 10                	jmp    0x40b992
40b982:	80 7e 29 00          	cmpb   $0x0,0x29(%esi)
40b986:	75 0a                	jne    0x40b992
40b988:	8b 4e 30             	mov    0x30(%esi),%ecx
40b98b:	57                   	push   %edi
40b98c:	53                   	push   %ebx
40b98d:	e8 b4 d0 ff ff       	call   0x408a46
40b992:	8d 86 88 18 00 00    	lea    0x1888(%esi),%eax
40b998:	01 38                	add    %edi,(%eax)
40b99a:	83 50 04 00          	adcl   $0x0,0x4(%eax)
40b99e:	80 7e 2a 00          	cmpb   $0x0,0x2a(%esi)
40b9a2:	75 0d                	jne    0x40b9b1
40b9a4:	57                   	push   %edi
40b9a5:	53                   	push   %ebx
40b9a6:	8d 8e 68 2f 00 00    	lea    0x2f68(%esi),%ecx
40b9ac:	e8 91 de ff ff       	call   0x409842
40b9b1:	e8 be 51 00 00       	call   0x410b74
40b9b6:	5f                   	pop    %edi
40b9b7:	5e                   	pop    %esi
40b9b8:	5b                   	pop    %ebx
40b9b9:	c2 08 00             	ret    $0x8
40b9bc:	8b c1                	mov    %ecx,%eax
40b9be:	33 c9                	xor    %ecx,%ecx
40b9c0:	89 08                	mov    %ecx,(%eax)
40b9c2:	89 48 04             	mov    %ecx,0x4(%eax)
40b9c5:	88 48 10             	mov    %cl,0x10(%eax)
40b9c8:	c3                   	ret
40b9c9:	ff 31                	push   (%ecx)
40b9cb:	e8 12 e5 00 00       	call   0x419ee2
40b9d0:	59                   	pop    %ecx
40b9d1:	c3                   	ret
40b9d2:	33 c0                	xor    %eax,%eax
40b9d4:	39 01                	cmp    %eax,(%ecx)
40b9d6:	0f 95 c0             	setne  %al
40b9d9:	c3                   	ret
40b9da:	56                   	push   %esi
40b9db:	8b 31                	mov    (%ecx),%esi
40b9dd:	0f b7 06             	movzwl (%esi),%eax
40b9e0:	57                   	push   %edi
40b9e1:	66 85 c0             	test   %ax,%ax
40b9e4:	74 53                	je     0x40ba39
40b9e6:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40b9ea:	66 3b 07             	cmp    (%edi),%ax
40b9ed:	75 30                	jne    0x40ba1f
40b9ef:	6a 07                	push   $0x7
40b9f1:	8d 47 02             	lea    0x2(%edi),%eax
40b9f4:	50                   	push   %eax
40b9f5:	8d 46 02             	lea    0x2(%esi),%eax
40b9f8:	50                   	push   %eax
40b9f9:	e8 7c 09 01 00       	call   0x41c37a
40b9fe:	83 c4 0c             	add    $0xc,%esp
40ba01:	85 c0                	test   %eax,%eax
40ba03:	75 1a                	jne    0x40ba1f
40ba05:	66 83 7e 10 3d       	cmpw   $0x3d,0x10(%esi)
40ba0a:	75 13                	jne    0x40ba1f
40ba0c:	66 83 7e 12 22       	cmpw   $0x22,0x12(%esi)
40ba11:	75 0c                	jne    0x40ba1f
40ba13:	8b c6                	mov    %esi,%eax
40ba15:	eb 24                	jmp    0x40ba3b
40ba17:	66 83 f8 0c          	cmp    $0xc,%ax
40ba1b:	74 0c                	je     0x40ba29
40ba1d:	46                   	inc    %esi
40ba1e:	46                   	inc    %esi
40ba1f:	0f b7 06             	movzwl (%esi),%eax
40ba22:	66 85 c0             	test   %ax,%ax
40ba25:	75 f0                	jne    0x40ba17
40ba27:	eb 02                	jmp    0x40ba2b
40ba29:	46                   	inc    %esi
40ba2a:	46                   	inc    %esi
40ba2b:	66 83 3e 0c          	cmpw   $0xc,(%esi)
40ba2f:	74 f8                	je     0x40ba29
40ba31:	0f b7 06             	movzwl (%esi),%eax
40ba34:	66 85 c0             	test   %ax,%ax
40ba37:	75 b1                	jne    0x40b9ea
40ba39:	33 c0                	xor    %eax,%eax
40ba3b:	5f                   	pop    %edi
40ba3c:	5e                   	pop    %esi
40ba3d:	c2 04 00             	ret    $0x4
40ba40:	80 79 10 00          	cmpb   $0x0,0x10(%ecx)
40ba44:	74 1e                	je     0x40ba64
40ba46:	6a ec                	push   $0xffffffec
40ba48:	ff 74 24 08          	push   0x8(%esp)
40ba4c:	ff 15 40 a3 42 00    	call   *0x42a340
40ba52:	0d 00 00 40 00       	or     $0x400000,%eax
40ba57:	50                   	push   %eax
40ba58:	6a ec                	push   $0xffffffec
40ba5a:	ff 74 24 0c          	push   0xc(%esp)
40ba5e:	ff 15 90 a2 42 00    	call   *0x42a290
40ba64:	c2 04 00             	ret    $0x4
40ba67:	b8 aa 93 42 00       	mov    $0x4293aa,%eax
40ba6c:	e8 47 e4 00 00       	call   0x419eb8
40ba71:	b8 34 40 00 00       	mov    $0x4034,%eax
40ba76:	e8 55 ea 00 00       	call   0x41a4d0
40ba7b:	56                   	push   %esi
40ba7c:	6a 5c                	push   $0x5c
40ba7e:	ff 75 08             	push   0x8(%ebp)
40ba81:	8b f1                	mov    %ecx,%esi
40ba83:	e8 c1 09 01 00       	call   0x41c449
40ba88:	59                   	pop    %ecx
40ba89:	85 c0                	test   %eax,%eax
40ba8b:	59                   	pop    %ecx
40ba8c:	8d 85 c0 df ff ff    	lea    -0x2040(%ebp),%eax
40ba92:	75 29                	jne    0x40babd
40ba94:	68 00 08 00 00       	push   $0x800
40ba99:	50                   	push   %eax
40ba9a:	6a 00                	push   $0x0
40ba9c:	ff 15 78 a0 42 00    	call   *0x42a078
40baa2:	8d 85 c0 df ff ff    	lea    -0x2040(%ebp),%eax
40baa8:	6a 5c                	push   $0x5c
40baaa:	50                   	push   %eax
40baab:	e8 bf 09 01 00       	call   0x41c46f
40bab0:	59                   	pop    %ecx
40bab1:	59                   	pop    %ecx
40bab2:	85 c0                	test   %eax,%eax
40bab4:	0f 84 89 02 00 00    	je     0x40bd43
40baba:	83 c0 02             	add    $0x2,%eax
40babd:	ff 75 08             	push   0x8(%ebp)
40bac0:	50                   	push   %eax
40bac1:	e8 0d e7 00 00       	call   0x41a1d3
40bac6:	59                   	pop    %ecx
40bac7:	59                   	pop    %ecx
40bac8:	53                   	push   %ebx
40bac9:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bacf:	e8 70 cc ff ff       	call   0x408744
40bad4:	6a 04                	push   $0x4
40bad6:	8d 85 c0 df ff ff    	lea    -0x2040(%ebp),%eax
40badc:	33 db                	xor    %ebx,%ebx
40bade:	50                   	push   %eax
40badf:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bae5:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40bae8:	e8 94 cc ff ff       	call   0x408781
40baed:	84 c0                	test   %al,%al
40baef:	75 14                	jne    0x40bb05
40baf1:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40baf5:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bafb:	e8 0a d1 ff ff       	call   0x408c0a
40bb00:	e9 3d 02 00 00       	jmp    0x40bd42
40bb05:	83 4d f0 ff          	orl    $0xffffffff,-0x10(%ebp)
40bb09:	88 5d 0b             	mov    %bl,0xb(%ebp)
40bb0c:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40bb0f:	57                   	push   %edi
40bb10:	83 7d f0 ff          	cmpl   $0xffffffff,-0x10(%ebp)
40bb14:	0f 85 17 01 00 00    	jne    0x40bc31
40bb1a:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bb20:	e8 16 d0 ff ff       	call   0x408b3b
40bb25:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40bb28:	68 00 20 00 00       	push   $0x2000
40bb2d:	8d 85 c0 bf ff ff    	lea    -0x4040(%ebp),%eax
40bb33:	50                   	push   %eax
40bb34:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bb3a:	e8 ce d2 ff ff       	call   0x408e0d
40bb3f:	89 45 e8             	mov    %eax,-0x18(%ebp)
40bb42:	83 c0 f0             	add    $0xfffffff0,%eax
40bb45:	33 ff                	xor    %edi,%edi
40bb47:	3b c3                	cmp    %ebx,%eax
40bb49:	0f 8c ae 00 00 00    	jl     0x40bbfd
40bb4f:	8d 9c 3d c0 bf ff ff 	lea    -0x4040(%ebp,%edi,1),%ebx
40bb56:	80 3b 2a             	cmpb   $0x2a,(%ebx)
40bb59:	75 25                	jne    0x40bb80
40bb5b:	80 bc 3d c1 bf ff ff 	cmpb   $0x2a,-0x403f(%ebp,%edi,1)
40bb62:	2a
40bb63:	75 1b                	jne    0x40bb80
40bb65:	6a 0b                	push   $0xb
40bb67:	8d 84 3d c2 bf ff ff 	lea    -0x403e(%ebp,%edi,1),%eax
40bb6e:	68 e0 a6 42 00       	push   $0x42a6e0
40bb73:	50                   	push   %eax
40bb74:	e8 af 0e 01 00       	call   0x41ca28
40bb79:	83 c4 0c             	add    $0xc,%esp
40bb7c:	85 c0                	test   %eax,%eax
40bb7e:	74 75                	je     0x40bbf5
40bb80:	66 83 3b 2a          	cmpw   $0x2a,(%ebx)
40bb84:	75 2c                	jne    0x40bbb2
40bb86:	8d 84 3d c4 bf ff ff 	lea    -0x403c(%ebp,%edi,1),%eax
40bb8d:	66 83 78 fe 2a       	cmpw   $0x2a,-0x2(%eax)
40bb92:	75 1e                	jne    0x40bbb2
40bb94:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40bb97:	83 c1 e0             	add    $0xffffffe0,%ecx
40bb9a:	3b f9                	cmp    %ecx,%edi
40bb9c:	7f 14                	jg     0x40bbb2
40bb9e:	6a 0b                	push   $0xb
40bba0:	68 c4 a6 42 00       	push   $0x42a6c4
40bba5:	50                   	push   %eax
40bba6:	e8 cf 07 01 00       	call   0x41c37a
40bbab:	83 c4 0c             	add    $0xc,%esp
40bbae:	85 c0                	test   %eax,%eax
40bbb0:	74 3f                	je     0x40bbf1
40bbb2:	80 3b 52             	cmpb   $0x52,(%ebx)
40bbb5:	75 29                	jne    0x40bbe0
40bbb7:	80 bc 3d c1 bf ff ff 	cmpb   $0x61,-0x403f(%ebp,%edi,1)
40bbbe:	61
40bbbf:	75 1f                	jne    0x40bbe0
40bbc1:	6a 04                	push   $0x4
40bbc3:	8d 84 3d c2 bf ff ff 	lea    -0x403e(%ebp,%edi,1),%eax
40bbca:	68 bc a6 42 00       	push   $0x42a6bc
40bbcf:	50                   	push   %eax
40bbd0:	e8 53 0e 01 00       	call   0x41ca28
40bbd5:	83 c4 0c             	add    $0xc,%esp
40bbd8:	85 c0                	test   %eax,%eax
40bbda:	0f 84 52 01 00 00    	je     0x40bd32
40bbe0:	8b 45 e8             	mov    -0x18(%ebp),%eax
40bbe3:	47                   	inc    %edi
40bbe4:	83 c0 f0             	add    $0xfffffff0,%eax
40bbe7:	3b f8                	cmp    %eax,%edi
40bbe9:	0f 8e 60 ff ff ff    	jle    0x40bb4f
40bbef:	eb 0c                	jmp    0x40bbfd
40bbf1:	c6 45 0b 01          	movb   $0x1,0xb(%ebp)
40bbf5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40bbf8:	03 f8                	add    %eax,%edi
40bbfa:	89 7d f0             	mov    %edi,-0x10(%ebp)
40bbfd:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40bc00:	8b 45 e8             	mov    -0x18(%ebp),%eax
40bc03:	33 db                	xor    %ebx,%ebx
40bc05:	53                   	push   %ebx
40bc06:	8d 44 08 f0          	lea    -0x10(%eax,%ecx,1),%eax
40bc0a:	53                   	push   %ebx
40bc0b:	50                   	push   %eax
40bc0c:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bc12:	e8 68 d3 ff ff       	call   0x408f7f
40bc17:	ff 45 ec             	incl   -0x14(%ebp)
40bc1a:	81 7d ec 80 00 00 00 	cmpl   $0x80,-0x14(%ebp)
40bc21:	0f 82 e9 fe ff ff    	jb     0x40bb10
40bc27:	83 7d f0 ff          	cmpl   $0xffffffff,-0x10(%ebp)
40bc2b:	0f 84 01 01 00 00    	je     0x40bd32
40bc31:	8b 45 f0             	mov    -0x10(%ebp),%eax
40bc34:	99                   	cltd
40bc35:	53                   	push   %ebx
40bc36:	52                   	push   %edx
40bc37:	50                   	push   %eax
40bc38:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bc3e:	e8 3c d3 ff ff       	call   0x408f7f
40bc43:	68 02 00 08 00       	push   $0x80002
40bc48:	e8 11 0d 01 00       	call   0x41c95e
40bc4d:	59                   	pop    %ecx
40bc4e:	89 06                	mov    %eax,(%esi)
40bc50:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bc56:	3b c3                	cmp    %ebx,%eax
40bc58:	0f 84 da 00 00 00    	je     0x40bd38
40bc5e:	68 00 00 08 00       	push   $0x80000
40bc63:	50                   	push   %eax
40bc64:	e8 a4 d1 ff ff       	call   0x408e0d
40bc69:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
40bc6d:	89 46 04             	mov    %eax,0x4(%esi)
40bc70:	74 07                	je     0x40bc79
40bc72:	d1 e8                	shr    $1,%eax
40bc74:	89 46 04             	mov    %eax,0x4(%esi)
40bc77:	eb 35                	jmp    0x40bcae
40bc79:	8d 44 00 02          	lea    0x2(%eax,%eax,1),%eax
40bc7d:	50                   	push   %eax
40bc7e:	e8 db 0c 01 00       	call   0x41c95e
40bc83:	8b f8                	mov    %eax,%edi
40bc85:	59                   	pop    %ecx
40bc86:	3b fb                	cmp    %ebx,%edi
40bc88:	0f 84 a4 00 00 00    	je     0x40bd32
40bc8e:	8b 46 04             	mov    0x4(%esi),%eax
40bc91:	8b 0e                	mov    (%esi),%ecx
40bc93:	c6 04 08 00          	movb   $0x0,(%eax,%ecx,1)
40bc97:	8b 46 04             	mov    0x4(%esi),%eax
40bc9a:	40                   	inc    %eax
40bc9b:	50                   	push   %eax
40bc9c:	57                   	push   %edi
40bc9d:	ff 36                	push   (%esi)
40bc9f:	e8 d0 5a 00 00       	call   0x411774
40bca4:	ff 36                	push   (%esi)
40bca6:	e8 37 e2 00 00       	call   0x419ee2
40bcab:	59                   	pop    %ecx
40bcac:	89 3e                	mov    %edi,(%esi)
40bcae:	8b 4e 04             	mov    0x4(%esi),%ecx
40bcb1:	b8 00 00 04 00       	mov    $0x40000,%eax
40bcb6:	3b c8                	cmp    %eax,%ecx
40bcb8:	77 02                	ja     0x40bcbc
40bcba:	8b c1                	mov    %ecx,%eax
40bcbc:	8b 0e                	mov    (%esi),%ecx
40bcbe:	33 d2                	xor    %edx,%edx
40bcc0:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)