40dc9a:	83 c4 0c             	add    $0xc,%esp
40dc9d:	85 c0                	test   %eax,%eax
40dc9f:	75 10                	jne    0x40dcb1
40dca1:	8b 06                	mov    (%esi),%eax
40dca3:	0f b7 04 78          	movzwl (%eax,%edi,2),%eax
40dca7:	83 f8 3d             	cmp    $0x3d,%eax
40dcaa:	74 1e                	je     0x40dcca
40dcac:	66 85 c0             	test   %ax,%ax
40dcaf:	74 19                	je     0x40dcca
40dcb1:	83 c6 04             	add    $0x4,%esi
40dcb4:	8b 06                	mov    (%esi),%eax
40dcb6:	85 c0                	test   %eax,%eax
40dcb8:	75 d6                	jne    0x40dc90
40dcba:	8b c6                	mov    %esi,%eax
40dcbc:	2b 05 70 32 41 00    	sub    0x413270,%eax
40dcc2:	c1 f8 02             	sar    $0x2,%eax
40dcc5:	f7 d8                	neg    %eax
40dcc7:	5e                   	pop    %esi
40dcc8:	5d                   	pop    %ebp
40dcc9:	c3                   	ret
40dcca:	8b c6                	mov    %esi,%eax
40dccc:	2b 05 70 32 41 00    	sub    0x413270,%eax
40dcd2:	c1 f8 02             	sar    $0x2,%eax
40dcd5:	eb f0                	jmp    0x40dcc7
40dcd7:	8b ff                	mov    %edi,%edi
40dcd9:	55                   	push   %ebp
40dcda:	8b ec                	mov    %esp,%ebp
40dcdc:	51                   	push   %ecx
40dcdd:	57                   	push   %edi
40dcde:	8b f8                	mov    %eax,%edi
40dce0:	33 c0                	xor    %eax,%eax
40dce2:	8b cf                	mov    %edi,%ecx
40dce4:	85 ff                	test   %edi,%edi
40dce6:	74 4c                	je     0x40dd34
40dce8:	39 07                	cmp    %eax,(%edi)
40dcea:	74 09                	je     0x40dcf5
40dcec:	83 c1 04             	add    $0x4,%ecx
40dcef:	40                   	inc    %eax
40dcf0:	83 39 00             	cmpl   $0x0,(%ecx)
40dcf3:	75 f7                	jne    0x40dcec
40dcf5:	56                   	push   %esi
40dcf6:	40                   	inc    %eax
40dcf7:	6a 04                	push   $0x4
40dcf9:	50                   	push   %eax
40dcfa:	e8 05 8c ff ff       	call   0x406904
40dcff:	8b f0                	mov    %eax,%esi
40dd01:	59                   	pop    %ecx
40dd02:	59                   	pop    %ecx
40dd03:	89 75 fc             	mov    %esi,-0x4(%ebp)
40dd06:	85 f6                	test   %esi,%esi
40dd08:	75 08                	jne    0x40dd12
40dd0a:	6a 09                	push   $0x9
40dd0c:	e8 06 87 ff ff       	call   0x406417
40dd11:	59                   	pop    %ecx
40dd12:	8b 07                	mov    (%edi),%eax
40dd14:	85 c0                	test   %eax,%eax
40dd16:	74 15                	je     0x40dd2d
40dd18:	2b fe                	sub    %esi,%edi
40dd1a:	50                   	push   %eax
40dd1b:	e8 c8 08 00 00       	call   0x40e5e8
40dd20:	89 06                	mov    %eax,(%esi)
40dd22:	83 c6 04             	add    $0x4,%esi
40dd25:	8b 04 37             	mov    (%edi,%esi,1),%eax
40dd28:	59                   	pop    %ecx
40dd29:	85 c0                	test   %eax,%eax
40dd2b:	75 ed                	jne    0x40dd1a
40dd2d:	83 26 00             	andl   $0x0,(%esi)
40dd30:	8b 45 fc             	mov    -0x4(%ebp),%eax
40dd33:	5e                   	pop    %esi
40dd34:	5f                   	pop    %edi
40dd35:	c9                   	leave
40dd36:	c3                   	ret
40dd37:	8b ff                	mov    %edi,%edi
40dd39:	55                   	push   %ebp
40dd3a:	8b ec                	mov    %esp,%ebp
40dd3c:	83 ec 10             	sub    $0x10,%esp
40dd3f:	8b 45 08             	mov    0x8(%ebp),%eax
40dd42:	56                   	push   %esi
40dd43:	33 f6                	xor    %esi,%esi
40dd45:	89 75 f4             	mov    %esi,-0xc(%ebp)
40dd48:	3b c6                	cmp    %esi,%eax
40dd4a:	75 18                	jne    0x40dd64
40dd4c:	e8 d6 63 ff ff       	call   0x404127
40dd51:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dd57:	e8 2b 4f ff ff       	call   0x402c87
40dd5c:	83 c8 ff             	or     $0xffffffff,%eax
40dd5f:	e9 80 00 00 00       	jmp    0x40dde4
40dd64:	53                   	push   %ebx
40dd65:	8b 18                	mov    (%eax),%ebx
40dd67:	57                   	push   %edi
40dd68:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40dd6b:	3b de                	cmp    %esi,%ebx
40dd6d:	74 65                	je     0x40ddd4
40dd6f:	6a 3d                	push   $0x3d
40dd71:	53                   	push   %ebx
40dd72:	e8 41 41 ff ff       	call   0x401eb8
40dd77:	8b f8                	mov    %eax,%edi
40dd79:	59                   	pop    %ecx
40dd7a:	59                   	pop    %ecx
40dd7b:	3b fe                	cmp    %esi,%edi
40dd7d:	74 55                	je     0x40ddd4
40dd7f:	3b df                	cmp    %edi,%ebx
40dd81:	74 51                	je     0x40ddd4
40dd83:	33 c0                	xor    %eax,%eax
40dd85:	66 39 77 02          	cmp    %si,0x2(%edi)
40dd89:	0f 94 c0             	sete   %al
40dd8c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dd8f:	a1 70 32 41 00       	mov    0x413270,%eax
40dd94:	3b 05 74 32 41 00    	cmp    0x413274,%eax
40dd9a:	75 0a                	jne    0x40dda6
40dd9c:	e8 36 ff ff ff       	call   0x40dcd7
40dda1:	a3 70 32 41 00       	mov    %eax,0x413270
40dda6:	3b c6                	cmp    %esi,%eax
40dda8:	75 78                	jne    0x40de22
40ddaa:	a1 68 32 41 00       	mov    0x413268,%eax
40ddaf:	39 75 0c             	cmp    %esi,0xc(%ebp)
40ddb2:	74 33                	je     0x40dde7
40ddb4:	3b c6                	cmp    %esi,%eax
40ddb6:	74 2f                	je     0x40dde7
40ddb8:	e8 d7 b9 ff ff       	call   0x409794
40ddbd:	a3 ec 2e 41 00       	mov    %eax,0x412eec
40ddc2:	e8 f1 b8 ff ff       	call   0x4096b8
40ddc7:	85 c0                	test   %eax,%eax
40ddc9:	79 57                	jns    0x40de22
40ddcb:	e8 61 b8 ff ff       	call   0x409631
40ddd0:	85 c0                	test   %eax,%eax
40ddd2:	74 4e                	je     0x40de22
40ddd4:	e8 4e 63 ff ff       	call   0x404127
40ddd9:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dddf:	83 c8 ff             	or     $0xffffffff,%eax
40dde2:	5f                   	pop    %edi
40dde3:	5b                   	pop    %ebx
40dde4:	5e                   	pop    %esi
40dde5:	c9                   	leave
40dde6:	c3                   	ret
40dde7:	39 75 f8             	cmp    %esi,-0x8(%ebp)
40ddea:	0f 85 c0 01 00 00    	jne    0x40dfb0
40ddf0:	3b c6                	cmp    %esi,%eax
40ddf2:	75 1b                	jne    0x40de0f
40ddf4:	6a 04                	push   $0x4
40ddf6:	e8 c4 8a ff ff       	call   0x4068bf
40ddfb:	59                   	pop    %ecx
40ddfc:	a3 68 32 41 00       	mov    %eax,0x413268
40de01:	3b c6                	cmp    %esi,%eax
40de03:	74 da                	je     0x40dddf
40de05:	89 30                	mov    %esi,(%eax)
40de07:	39 35 70 32 41 00    	cmp    %esi,0x413270
40de0d:	75 13                	jne    0x40de22
40de0f:	6a 04                	push   $0x4
40de11:	e8 a9 8a ff ff       	call   0x4068bf
40de16:	59                   	pop    %ecx
40de17:	a3 70 32 41 00       	mov    %eax,0x413270
40de1c:	3b c6                	cmp    %esi,%eax
40de1e:	74 bf                	je     0x40dddf
40de20:	89 30                	mov    %esi,(%eax)
40de22:	8b 1d 70 32 41 00    	mov    0x413270,%ebx
40de28:	3b de                	cmp    %esi,%ebx
40de2a:	74 b3                	je     0x40dddf
40de2c:	2b 7d fc             	sub    -0x4(%ebp),%edi
40de2f:	ff 75 fc             	push   -0x4(%ebp)
40de32:	d1 ff                	sar    $1,%edi
40de34:	89 7d f0             	mov    %edi,-0x10(%ebp)
40de37:	e8 46 fe ff ff       	call   0x40dc82
40de3c:	8b f8                	mov    %eax,%edi
40de3e:	59                   	pop    %ecx
40de3f:	3b fe                	cmp    %esi,%edi
40de41:	0f 8c fd 00 00 00    	jl     0x40df44
40de47:	39 33                	cmp    %esi,(%ebx)
40de49:	0f 84 f5 00 00 00    	je     0x40df44
40de4f:	8d 34 bb             	lea    (%ebx,%edi,4),%esi
40de52:	ff 36                	push   (%esi)
40de54:	e8 12 41 ff ff       	call   0x401f6b
40de59:	33 c0                	xor    %eax,%eax
40de5b:	59                   	pop    %ecx
40de5c:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40de5f:	0f 85 ac 00 00 00    	jne    0x40df11
40de65:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40de68:	89 0e                	mov    %ecx,(%esi)
40de6a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40de6d:	89 01                	mov    %eax,(%ecx)
40de6f:	33 f6                	xor    %esi,%esi
40de71:	39 75 0c             	cmp    %esi,0xc(%ebp)
40de74:	74 77                	je     0x40deed
40de76:	6a 02                	push   $0x2
40de78:	5b                   	pop    %ebx
40de79:	53                   	push   %ebx
40de7a:	ff 75 fc             	push   -0x4(%ebp)
40de7d:	e8 94 b7 ff ff       	call   0x409616
40de82:	59                   	pop    %ecx
40de83:	03 c3                	add    %ebx,%eax
40de85:	50                   	push   %eax
40de86:	e8 79 8a ff ff       	call   0x406904
40de8b:	8b f8                	mov    %eax,%edi
40de8d:	59                   	pop    %ecx
40de8e:	59                   	pop    %ecx
40de8f:	3b fe                	cmp    %esi,%edi
40de91:	74 5a                	je     0x40deed
40de93:	ff 75 fc             	push   -0x4(%ebp)
40de96:	ff 75 fc             	push   -0x4(%ebp)
40de99:	e8 78 b7 ff ff       	call   0x409616
40de9e:	59                   	pop    %ecx
40de9f:	03 c3                	add    %ebx,%eax
40dea1:	50                   	push   %eax
40dea2:	57                   	push   %edi
40dea3:	e8 13 59 ff ff       	call   0x4037bb
40dea8:	83 c4 0c             	add    $0xc,%esp
40deab:	85 c0                	test   %eax,%eax
40dead:	0f 85 e5 00 00 00    	jne    0x40df98
40deb3:	8b 45 f0             	mov    -0x10(%ebp),%eax
40deb6:	33 c9                	xor    %ecx,%ecx
40deb8:	8d 04 47             	lea    (%edi,%eax,2),%eax
40debb:	66 89 08             	mov    %cx,(%eax)
40debe:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40dec1:	03 c3                	add    %ebx,%eax
40dec3:	f7 d9                	neg    %ecx
40dec5:	1b c9                	sbb    %ecx,%ecx
40dec7:	f7 d1                	not    %ecx
40dec9:	23 c8                	and    %eax,%ecx
40decb:	51                   	push   %ecx
40decc:	57                   	push   %edi
40decd:	ff 15 68 f0 40 00    	call   *0x40f068
40ded3:	85 c0                	test   %eax,%eax
40ded5:	75 0f                	jne    0x40dee6
40ded7:	83 4d f4 ff          	orl    $0xffffffff,-0xc(%ebp)
40dedb:	e8 47 62 ff ff       	call   0x404127
40dee0:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40dee6:	57                   	push   %edi
40dee7:	e8 7f 40 ff ff       	call   0x401f6b
40deec:	59                   	pop    %ecx
40deed:	39 75 f8             	cmp    %esi,-0x8(%ebp)
40def0:	74 0e                	je     0x40df00
40def2:	ff 75 fc             	push   -0x4(%ebp)
40def5:	e8 71 40 ff ff       	call   0x401f6b
40defa:	8b 45 08             	mov    0x8(%ebp),%eax
40defd:	59                   	pop    %ecx
40defe:	89 30                	mov    %esi,(%eax)
40df00:	8b 45 f4             	mov    -0xc(%ebp),%eax
40df03:	e9 da fe ff ff       	jmp    0x40dde2
40df08:	8b 4e 04             	mov    0x4(%esi),%ecx
40df0b:	47                   	inc    %edi
40df0c:	89 0e                	mov    %ecx,(%esi)
40df0e:	8d 34 bb             	lea    (%ebx,%edi,4),%esi
40df11:	39 06                	cmp    %eax,(%esi)
40df13:	75 f3                	jne    0x40df08
40df15:	81 ff ff ff ff 3f    	cmp    $0x3fffffff,%edi
40df1b:	0f 83 4e ff ff ff    	jae    0x40de6f
40df21:	6a 04                	push   $0x4
40df23:	57                   	push   %edi
40df24:	ff 35 70 32 41 00    	push   0x413270
40df2a:	e8 6f 8a ff ff       	call   0x40699e
40df2f:	83 c4 0c             	add    $0xc,%esp
40df32:	85 c0                	test   %eax,%eax
40df34:	0f 84 35 ff ff ff    	je     0x40de6f
40df3a:	a3 70 32 41 00       	mov    %eax,0x413270
40df3f:	e9 2b ff ff ff       	jmp    0x40de6f
40df44:	39 75 f8             	cmp    %esi,-0x8(%ebp)
40df47:	75 59                	jne    0x40dfa2
40df49:	3b fe                	cmp    %esi,%edi
40df4b:	7d 02                	jge    0x40df4f
40df4d:	f7 df                	neg    %edi
40df4f:	8d 47 02             	lea    0x2(%edi),%eax
40df52:	3b c7                	cmp    %edi,%eax
40df54:	0f 8c 85 fe ff ff    	jl     0x40dddf
40df5a:	3d ff ff ff 3f       	cmp    $0x3fffffff,%eax
40df5f:	0f 83 7a fe ff ff    	jae    0x40dddf
40df65:	50                   	push   %eax
40df66:	6a 04                	push   $0x4
40df68:	ff 35 70 32 41 00    	push   0x413270
40df6e:	e8 2b 8a ff ff       	call   0x40699e
40df73:	83 c4 0c             	add    $0xc,%esp
40df76:	3b c6                	cmp    %esi,%eax
40df78:	0f 84 61 fe ff ff    	je     0x40dddf
40df7e:	8b 55 fc             	mov    -0x4(%ebp),%edx
40df81:	8d 0c b8             	lea    (%eax,%edi,4),%ecx
40df84:	89 11                	mov    %edx,(%ecx)
40df86:	89 71 04             	mov    %esi,0x4(%ecx)
40df89:	8b 4d 08             	mov    0x8(%ebp),%ecx
40df8c:	89 31                	mov    %esi,(%ecx)
40df8e:	a3 70 32 41 00       	mov    %eax,0x413270
40df93:	e9 d9 fe ff ff       	jmp    0x40de71
40df98:	56                   	push   %esi
40df99:	56                   	push   %esi
40df9a:	56                   	push   %esi
40df9b:	56                   	push   %esi
40df9c:	56                   	push   %esi
40df9d:	e8 93 4c ff ff       	call   0x402c35
40dfa2:	ff 75 fc             	push   -0x4(%ebp)
40dfa5:	e8 c1 3f ff ff       	call   0x401f6b
40dfaa:	8b 45 08             	mov    0x8(%ebp),%eax
40dfad:	59                   	pop    %ecx
40dfae:	89 30                	mov    %esi,(%eax)
40dfb0:	33 c0                	xor    %eax,%eax
40dfb2:	e9 2b fe ff ff       	jmp    0x40dde2
40dfb7:	8b ff                	mov    %edi,%edi
40dfb9:	55                   	push   %ebp
40dfba:	8b ec                	mov    %esp,%ebp
40dfbc:	83 ec 10             	sub    $0x10,%esp
40dfbf:	ff 75 08             	push   0x8(%ebp)
40dfc2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40dfc5:	e8 1b 40 ff ff       	call   0x401fe5
40dfca:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
40dfce:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40dfd1:	8a 55 14             	mov    0x14(%ebp),%dl
40dfd4:	84 54 01 1d          	test   %dl,0x1d(%ecx,%eax,1)
40dfd8:	75 1e                	jne    0x40dff8
40dfda:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40dfde:	74 12                	je     0x40dff2
40dfe0:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40dfe3:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
40dfe9:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
40dfed:	23 45 10             	and    0x10(%ebp),%eax
40dff0:	eb 02                	jmp    0x40dff4
40dff2:	33 c0                	xor    %eax,%eax
40dff4:	85 c0                	test   %eax,%eax
40dff6:	74 03                	je     0x40dffb
40dff8:	33 c0                	xor    %eax,%eax
40dffa:	40                   	inc    %eax
40dffb:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40dfff:	74 07                	je     0x40e008
40e001:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40e004:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40e008:	c9                   	leave
40e009:	c3                   	ret
40e00a:	8b ff                	mov    %edi,%edi
40e00c:	55                   	push   %ebp
40e00d:	8b ec                	mov    %esp,%ebp
40e00f:	6a 04                	push   $0x4
40e011:	6a 00                	push   $0x0
40e013:	ff 75 08             	push   0x8(%ebp)
40e016:	6a 00                	push   $0x0
40e018:	e8 9a ff ff ff       	call   0x40dfb7
40e01d:	83 c4 10             	add    $0x10,%esp
40e020:	5d                   	pop    %ebp
40e021:	c3                   	ret
40e022:	8b ff                	mov    %edi,%edi
40e024:	55                   	push   %ebp
40e025:	8b ec                	mov    %esp,%ebp
40e027:	83 ec 18             	sub    $0x18,%esp
40e02a:	53                   	push   %ebx
40e02b:	56                   	push   %esi
40e02c:	57                   	push   %edi
40e02d:	33 db                	xor    %ebx,%ebx
40e02f:	6a 01                	push   $0x1
40e031:	53                   	push   %ebx
40e032:	53                   	push   %ebx
40e033:	ff 75 08             	push   0x8(%ebp)
40e036:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40e039:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40e03c:	e8 ea f7 ff ff       	call   0x40d82b
40e041:	89 45 e8             	mov    %eax,-0x18(%ebp)