40da44:	85 d2                	test   %edx,%edx
40da46:	0f 85 a2 00 00 00    	jne    0x40daee
40da4c:	8a 5d 0f             	mov    0xf(%ebp),%bl
40da4f:	eb 02                	jmp    0x40da53
40da51:	b3 01                	mov    $0x1,%bl
40da53:	8b 06                	mov    (%esi),%eax
40da55:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40da58:	8b 40 18             	mov    0x18(%eax),%eax
40da5b:	8b 55 f4             	mov    -0xc(%ebp),%edx
40da5e:	89 41 1c             	mov    %eax,0x1c(%ecx)
40da61:	8b 0e                	mov    (%esi),%ecx
40da63:	5f                   	pop    %edi
40da64:	8b 49 1c             	mov    0x1c(%ecx),%ecx
40da67:	89 4a 18             	mov    %ecx,0x18(%edx)
40da6a:	8b 16                	mov    (%esi),%edx
40da6c:	8b 0d 10 22 4c 00    	mov    0x4c2210,%ecx
40da72:	89 4a 18             	mov    %ecx,0x18(%edx)
40da75:	8b 16                	mov    (%esi),%edx
40da77:	8b 0d 0c 22 4c 00    	mov    0x4c220c,%ecx
40da7d:	8a c3                	mov    %bl,%al
40da7f:	5b                   	pop    %ebx
40da80:	89 4a 1c             	mov    %ecx,0x1c(%edx)
40da83:	5e                   	pop    %esi
40da84:	8b e5                	mov    %ebp,%esp
40da86:	5d                   	pop    %ebp
40da87:	c2 08 00             	ret    $0x8
40da8a:	8b 45 08             	mov    0x8(%ebp),%eax
40da8d:	8b 52 18             	mov    0x18(%edx),%edx
40da90:	85 d2                	test   %edx,%edx
40da92:	74 b8                	je     0x40da4c
40da94:	8b 4a 04             	mov    0x4(%edx),%ecx
40da97:	3b d9                	cmp    %ecx,%ebx
40da99:	0f 87 22 01 00 00    	ja     0x40dbc1
40da9f:	8b 0a                	mov    (%edx),%ecx
40daa1:	8b 38                	mov    (%eax),%edi
40daa3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40daa6:	85 db                	test   %ebx,%ebx
40daa8:	0f 84 c3 00 00 00    	je     0x40db71
40daae:	8b ff                	mov    %edi,%edi
40dab0:	66 8b 07             	mov    (%edi),%ax
40dab3:	66 3b 01             	cmp    (%ecx),%ax
40dab6:	0f 84 a6 00 00 00    	je     0x40db62
40dabc:	73 19                	jae    0x40dad7
40dabe:	8b 0e                	mov    (%esi),%ecx
40dac0:	8b 42 1c             	mov    0x1c(%edx),%eax
40dac3:	89 41 18             	mov    %eax,0x18(%ecx)
40dac6:	8b 06                	mov    (%esi),%eax
40dac8:	89 42 1c             	mov    %eax,0x1c(%edx)
40dacb:	89 16                	mov    %edx,(%esi)
40dacd:	83 7a 18 00          	cmpl   $0x0,0x18(%edx)
40dad1:	0f 84 75 ff ff ff    	je     0x40da4c
40dad7:	8b 06                	mov    (%esi),%eax
40dad9:	8b 55 f4             	mov    -0xc(%ebp),%edx
40dadc:	89 42 18             	mov    %eax,0x18(%edx)
40dadf:	8b 06                	mov    (%esi),%eax
40dae1:	89 45 f4             	mov    %eax,-0xc(%ebp)
40dae4:	8b 40 18             	mov    0x18(%eax),%eax
40dae7:	89 06                	mov    %eax,(%esi)
40dae9:	e9 fa fe ff ff       	jmp    0x40d9e8
40daee:	8b 4a 04             	mov    0x4(%edx),%ecx
40daf1:	3b cb                	cmp    %ebx,%ecx
40daf3:	0f 87 cf 00 00 00    	ja     0x40dbc8
40daf9:	8b 38                	mov    (%eax),%edi
40dafb:	8b 02                	mov    (%edx),%eax
40dafd:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40db00:	89 45 fc             	mov    %eax,-0x4(%ebp)
40db03:	85 c9                	test   %ecx,%ecx
40db05:	74 19                	je     0x40db20
40db07:	66 8b 00             	mov    (%eax),%ax
40db0a:	66 3b 07             	cmp    (%edi),%ax
40db0d:	8b 45 fc             	mov    -0x4(%ebp),%eax
40db10:	75 76                	jne    0x40db88
40db12:	83 c0 02             	add    $0x2,%eax
40db15:	83 c7 02             	add    $0x2,%edi
40db18:	ff 4d f0             	decl   -0x10(%ebp)
40db1b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40db1e:	75 e7                	jne    0x40db07
40db20:	3b cb                	cmp    %ebx,%ecx
40db22:	72 6c                	jb     0x40db90
40db24:	8b 06                	mov    (%esi),%eax
40db26:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40db29:	89 41 1c             	mov    %eax,0x1c(%ecx)
40db2c:	8b 06                	mov    (%esi),%eax
40db2e:	89 45 f8             	mov    %eax,-0x8(%ebp)
40db31:	8b 40 1c             	mov    0x1c(%eax),%eax
40db34:	89 06                	mov    %eax,(%esi)
40db36:	e9 ad fe ff ff       	jmp    0x40d9e8
40db3b:	8b 00                	mov    (%eax),%eax
40db3d:	8b 3a                	mov    (%edx),%edi
40db3f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40db42:	85 c9                	test   %ecx,%ecx
40db44:	74 74                	je     0x40dbba
40db46:	66 8b 00             	mov    (%eax),%ax
40db49:	66 3b 07             	cmp    (%edi),%ax
40db4c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40db4f:	74 5d                	je     0x40dbae
40db51:	0f b7 00             	movzwl (%eax),%eax
40db54:	66 3b 07             	cmp    (%edi),%ax
40db57:	1b c0                	sbb    %eax,%eax
40db59:	83 e0 fe             	and    $0xfffffffe,%eax
40db5c:	40                   	inc    %eax
40db5d:	e9 d6 fe ff ff       	jmp    0x40da38
40db62:	83 c7 02             	add    $0x2,%edi
40db65:	83 c1 02             	add    $0x2,%ecx
40db68:	ff 4d fc             	decl   -0x4(%ebp)
40db6b:	0f 85 3f ff ff ff    	jne    0x40dab0
40db71:	3b 5a 04             	cmp    0x4(%edx),%ebx
40db74:	0f 83 5d ff ff ff    	jae    0x40dad7
40db7a:	e9 3f ff ff ff       	jmp    0x40dabe
40db7f:	32 c0                	xor    %al,%al
40db81:	5e                   	pop    %esi
40db82:	8b e5                	mov    %ebp,%esp
40db84:	5d                   	pop    %ebp
40db85:	c2 08 00             	ret    $0x8
40db88:	66 8b 00             	mov    (%eax),%ax
40db8b:	66 3b 07             	cmp    (%edi),%ax
40db8e:	73 94                	jae    0x40db24
40db90:	8b 0e                	mov    (%esi),%ecx
40db92:	8b 42 18             	mov    0x18(%edx),%eax
40db95:	89 41 1c             	mov    %eax,0x1c(%ecx)
40db98:	8b 06                	mov    (%esi),%eax
40db9a:	89 42 18             	mov    %eax,0x18(%edx)
40db9d:	89 16                	mov    %edx,(%esi)
40db9f:	83 7a 1c 00          	cmpl   $0x0,0x1c(%edx)
40dba3:	0f 84 a3 fe ff ff    	je     0x40da4c
40dba9:	e9 76 ff ff ff       	jmp    0x40db24
40dbae:	83 c0 02             	add    $0x2,%eax
40dbb1:	83 c7 02             	add    $0x2,%edi
40dbb4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40dbb7:	49                   	dec    %ecx
40dbb8:	75 8c                	jne    0x40db46
40dbba:	33 c0                	xor    %eax,%eax
40dbbc:	e9 77 fe ff ff       	jmp    0x40da38
40dbc1:	8b d9                	mov    %ecx,%ebx
40dbc3:	e9 d7 fe ff ff       	jmp    0x40da9f
40dbc8:	8b cb                	mov    %ebx,%ecx
40dbca:	e9 2a ff ff ff       	jmp    0x40daf9
40dbcf:	83 c8 01             	or     $0x1,%eax
40dbd2:	b9 f4 21 4c 00       	mov    $0x4c21f4,%ecx
40dbd7:	a3 f0 21 4c 00       	mov    %eax,0x4c21f0
40dbdc:	e8 16 fc ff ff       	call   0x40d7f7
40dbe1:	68 a5 1a 47 00       	push   $0x471aa5
40dbe6:	e8 1f 33 01 00       	call   0x420f0a
40dbeb:	83 c4 04             	add    $0x4,%esp
40dbee:	e9 d1 fd ff ff       	jmp    0x40d9c4
40dbf3:	55                   	push   %ebp
40dbf4:	8b ec                	mov    %esp,%ebp
40dbf6:	83 ec 14             	sub    $0x14,%esp
40dbf9:	53                   	push   %ebx
40dbfa:	56                   	push   %esi
40dbfb:	57                   	push   %edi
40dbfc:	8b f9                	mov    %ecx,%edi
40dbfe:	83 bf ec 00 00 00 01 	cmpl   $0x1,0xec(%edi)
40dc05:	0f 84 7b a9 06 00    	je     0x478586
40dc0b:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40dc0e:	8b 55 08             	mov    0x8(%ebp),%edx
40dc11:	ff 03                	incl   (%ebx)
40dc13:	8b 0b                	mov    (%ebx),%ecx
40dc15:	8b 42 04             	mov    0x4(%edx),%eax
40dc18:	6a 7f                	push   $0x7f
40dc1a:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40dc1d:	59                   	pop    %ecx
40dc1e:	66 39 48 08          	cmp    %cx,0x8(%eax)
40dc22:	74 57                	je     0x40dc7b
40dc24:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40dc28:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40dc2c:	6a ff                	push   $0xffffffff
40dc2e:	8d 45 f0             	lea    -0x10(%ebp),%eax
40dc31:	50                   	push   %eax
40dc32:	53                   	push   %ebx
40dc33:	52                   	push   %edx
40dc34:	8b cf                	mov    %edi,%ecx
40dc36:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40dc3d:	e8 ee 21 00 00       	call   0x40fe30
40dc42:	85 c0                	test   %eax,%eax
40dc44:	0f 88 5e a9 06 00    	js     0x4785a8
40dc4a:	8b 07                	mov    (%edi),%eax
40dc4c:	8b 70 04             	mov    0x4(%eax),%esi
40dc4f:	03 f7                	add    %edi,%esi
40dc51:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40dc55:	75 3c                	jne    0x40dc93
40dc57:	8b 4e 08             	mov    0x8(%esi),%ecx
40dc5a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40dc5d:	50                   	push   %eax
40dc5e:	e8 4b 00 00 00       	call   0x40dcae
40dc63:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40dc67:	8b 46 08             	mov    0x8(%esi),%eax
40dc6a:	75 2f                	jne    0x40dc9b
40dc6c:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40dc6f:	c6 40 10 01          	movb   $0x1,0x10(%eax)
40dc73:	e8 a8 4f 00 00       	call   0x412c20
40dc78:	8b 55 08             	mov    0x8(%ebp),%edx
40dc7b:	8b 0b                	mov    (%ebx),%ecx
40dc7d:	8b 42 04             	mov    0x4(%edx),%eax
40dc80:	6a 7f                	push   $0x7f
40dc82:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40dc85:	59                   	pop    %ecx
40dc86:	66 39 48 08          	cmp    %cx,0x8(%eax)
40dc8a:	75 14                	jne    0x40dca0
40dc8c:	5f                   	pop    %edi
40dc8d:	5e                   	pop    %esi
40dc8e:	5b                   	pop    %ebx
40dc8f:	c9                   	leave
40dc90:	c2 08 00             	ret    $0x8
40dc93:	8b 46 08             	mov    0x8(%esi),%eax
40dc96:	8b 48 38             	mov    0x38(%eax),%ecx
40dc99:	eb bf                	jmp    0x40dc5a
40dc9b:	8b 40 38             	mov    0x38(%eax),%eax
40dc9e:	eb cc                	jmp    0x40dc6c
40dca0:	0f bf 40 0a          	movswl 0xa(%eax),%eax
40dca4:	50                   	push   %eax
40dca5:	6a 72                	push   $0x72
40dca7:	8b cf                	mov    %edi,%ecx
40dca9:	e9 f0 a8 06 00       	jmp    0x47859e
40dcae:	55                   	push   %ebp
40dcaf:	8b ec                	mov    %esp,%ebp
40dcb1:	56                   	push   %esi
40dcb2:	57                   	push   %edi
40dcb3:	8b 7d 08             	mov    0x8(%ebp),%edi
40dcb6:	8b f1                	mov    %ecx,%esi
40dcb8:	3b f7                	cmp    %edi,%esi
40dcba:	74 45                	je     0x40dd01
40dcbc:	83 7e 0c 04          	cmpl   $0x4,0xc(%esi)
40dcc0:	74 47                	je     0x40dd09
40dcc2:	53                   	push   %ebx
40dcc3:	8b 5e 08             	mov    0x8(%esi),%ebx
40dcc6:	85 db                	test   %ebx,%ebx
40dcc8:	75 52                	jne    0x40dd1c
40dcca:	8b 46 0c             	mov    0xc(%esi),%eax
40dccd:	5b                   	pop    %ebx
40dcce:	83 f8 0b             	cmp    $0xb,%eax
40dcd1:	0f 8f d4 68 06 00    	jg     0x4745ab
40dcd7:	0f 84 b6 68 06 00    	je     0x474593
40dcdd:	83 e8 05             	sub    $0x5,%eax
40dce0:	74 5c                	je     0x40dd3e
40dce2:	83 e8 03             	sub    $0x3,%eax
40dce5:	0f 84 8e 68 06 00    	je     0x474579
40dceb:	48                   	dec    %eax
40dcec:	48                   	dec    %eax
40dced:	74 41                	je     0x40dd30
40dcef:	83 26 00             	andl   $0x0,(%esi)
40dcf2:	57                   	push   %edi
40dcf3:	8b ce                	mov    %esi,%ecx
40dcf5:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
40dcfc:	e8 1f 3a 00 00       	call   0x411720
40dd01:	5f                   	pop    %edi
40dd02:	8b c6                	mov    %esi,%eax
40dd04:	5e                   	pop    %esi
40dd05:	5d                   	pop    %ebp
40dd06:	c2 04 00             	ret    $0x4
40dd09:	83 7f 0c 04          	cmpl   $0x4,0xc(%edi)
40dd0d:	75 b3                	jne    0x40dcc2
40dd0f:	ff 77 08             	push   0x8(%edi)
40dd12:	8b 4e 08             	mov    0x8(%esi),%ecx
40dd15:	e8 d3 91 ff ff       	call   0x406eed
40dd1a:	eb e5                	jmp    0x40dd01
40dd1c:	8b cb                	mov    %ebx,%ecx
40dd1e:	e8 14 ee ff ff       	call   0x40cb37
40dd23:	53                   	push   %ebx
40dd24:	e8 35 18 01 00       	call   0x41f55e
40dd29:	83 66 08 00          	andl   $0x0,0x8(%esi)
40dd2d:	59                   	pop    %ecx
40dd2e:	eb 9a                	jmp    0x40dcca
40dd30:	8b 0e                	mov    (%esi),%ecx
40dd32:	85 c9                	test   %ecx,%ecx
40dd34:	74 b9                	je     0x40dcef
40dd36:	51                   	push   %ecx
40dd37:	e8 2f c4 03 00       	call   0x44a16b
40dd3c:	eb b1                	jmp    0x40dcef
40dd3e:	8b ce                	mov    %esi,%ecx
40dd40:	e8 79 ff 00 00       	call   0x41dcbe
40dd45:	eb a8                	jmp    0x40dcef
40dd47:	55                   	push   %ebp
40dd48:	8b ec                	mov    %esp,%ebp
40dd4a:	56                   	push   %esi
40dd4b:	8b f1                	mov    %ecx,%esi
40dd4d:	8b 4e 0c             	mov    0xc(%esi),%ecx
40dd50:	8b 01                	mov    (%ecx),%eax
40dd52:	83 f8 01             	cmp    $0x1,%eax
40dd55:	7f 69                	jg     0x40ddc0
40dd57:	53                   	push   %ebx
40dd58:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dd5b:	57                   	push   %edi
40dd5c:	8b 7b 04             	mov    0x4(%ebx),%edi
40dd5f:	89 7e 04             	mov    %edi,0x4(%esi)
40dd62:	8d 47 01             	lea    0x1(%edi),%eax
40dd65:	39 46 08             	cmp    %eax,0x8(%esi)
40dd68:	72 1e                	jb     0x40dd88
40dd6a:	8b 46 04             	mov    0x4(%esi),%eax
40dd6d:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
40dd74:	50                   	push   %eax
40dd75:	ff 33                	push   (%ebx)
40dd77:	ff 36                	push   (%esi)
40dd79:	e8 02 11 01 00       	call   0x41ee80
40dd7e:	83 c4 0c             	add    $0xc,%esp
40dd81:	5f                   	pop    %edi
40dd82:	5b                   	pop    %ebx
40dd83:	5e                   	pop    %esi
40dd84:	5d                   	pop    %ebp
40dd85:	c2 04 00             	ret    $0x4
40dd88:	50                   	push   %eax
40dd89:	e8 68 8d ff ff       	call   0x406af6
40dd8e:	83 3e 00             	cmpl   $0x0,(%esi)
40dd91:	89 46 08             	mov    %eax,0x8(%esi)
40dd94:	74 08                	je     0x40dd9e
40dd96:	ff 36                	push   (%esi)
40dd98:	e8 c1 17 01 00       	call   0x41f55e
40dd9d:	59                   	pop    %ecx
40dd9e:	8b 46 08             	mov    0x8(%esi),%eax
40dda1:	33 c9                	xor    %ecx,%ecx
40dda3:	6a 02                	push   $0x2
40dda5:	5a                   	pop    %edx
40dda6:	f7 e2                	mul    %edx
40dda8:	0f 90 c1             	seto   %cl
40ddab:	f7 d9                	neg    %ecx
40ddad:	0b c8                	or     %eax,%ecx
40ddaf:	51                   	push   %ecx
40ddb0:	e8 35 17 01 00       	call   0x41f4ea
40ddb5:	59                   	pop    %ecx
40ddb6:	33 c9                	xor    %ecx,%ecx
40ddb8:	89 06                	mov    %eax,(%esi)
40ddba:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40ddbe:	eb aa                	jmp    0x40dd6a
40ddc0:	48                   	dec    %eax
40ddc1:	89 01                	mov    %eax,(%ecx)
40ddc3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ddc6:	8b 41 04             	mov    0x4(%ecx),%eax
40ddc9:	89 46 04             	mov    %eax,0x4(%esi)
40ddcc:	8b 41 08             	mov    0x8(%ecx),%eax
40ddcf:	89 46 08             	mov    %eax,0x8(%esi)
40ddd2:	8b 01                	mov    (%ecx),%eax
40ddd4:	89 06                	mov    %eax,(%esi)
40ddd6:	8b 41 0c             	mov    0xc(%ecx),%eax
40ddd9:	89 46 0c             	mov    %eax,0xc(%esi)
40dddc:	ff 00                	incl   (%eax)
40ddde:	eb a3                	jmp    0x40dd83
40dde0:	56                   	push   %esi
40dde1:	8b f1                	mov    %ecx,%esi
40dde3:	57                   	push   %edi
40dde4:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
40dde8:	0f 85 60 65 06 00    	jne    0x47434e
40ddee:	80 7e 08 00          	cmpb   $0x0,0x8(%esi)
40ddf2:	75 28                	jne    0x40de1c
40ddf4:	8b 7e 04             	mov    0x4(%esi),%edi
40ddf7:	53                   	push   %ebx
40ddf8:	8b 5f 08             	mov    0x8(%edi),%ebx
40ddfb:	85 ff                	test   %edi,%edi
40ddfd:	74 10                	je     0x40de0f
40ddff:	ff 37                	push   (%edi)
40de01:	8b cf                	mov    %edi,%ecx