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
40de03:	e8 63 00 00 00       	call   0x40de6b
40de08:	57                   	push   %edi
40de09:	e8 50 17 01 00       	call   0x41f55e
40de0e:	59                   	pop    %ecx
40de0f:	89 5e 04             	mov    %ebx,0x4(%esi)
40de12:	c6 46 09 00          	movb   $0x0,0x9(%esi)
40de16:	5b                   	pop    %ebx
40de17:	ff 0e                	decl   (%esi)
40de19:	5f                   	pop    %edi
40de1a:	5e                   	pop    %esi
40de1b:	c3                   	ret
40de1c:	c6 46 09 01          	movb   $0x1,0x9(%esi)
40de20:	eb f5                	jmp    0x40de17
40de22:	56                   	push   %esi
40de23:	8b f1                	mov    %ecx,%esi
40de25:	57                   	push   %edi
40de26:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
40de2a:	0f 85 01 81 06 00    	jne    0x475f31
40de30:	80 7e 08 00          	cmpb   $0x0,0x8(%esi)
40de34:	75 2f                	jne    0x40de65
40de36:	8b 7e 04             	mov    0x4(%esi),%edi
40de39:	53                   	push   %ebx
40de3a:	8b 5f 30             	mov    0x30(%edi),%ebx
40de3d:	85 ff                	test   %edi,%edi
40de3f:	74 17                	je     0x40de58
40de41:	8d 4f 20             	lea    0x20(%edi),%ecx
40de44:	e8 d7 4d 00 00       	call   0x412c20
40de49:	8d 4f 10             	lea    0x10(%edi),%ecx
40de4c:	e8 cf 4d 00 00       	call   0x412c20
40de51:	57                   	push   %edi
40de52:	e8 07 17 01 00       	call   0x41f55e
40de57:	59                   	pop    %ecx
40de58:	89 5e 04             	mov    %ebx,0x4(%esi)
40de5b:	c6 46 09 00          	movb   $0x0,0x9(%esi)
40de5f:	5b                   	pop    %ebx
40de60:	ff 0e                	decl   (%esi)
40de62:	5f                   	pop    %edi
40de63:	5e                   	pop    %esi
40de64:	c3                   	ret
40de65:	c6 46 09 01          	movb   $0x1,0x9(%esi)
40de69:	eb f5                	jmp    0x40de60
40de6b:	55                   	push   %ebp
40de6c:	8b ec                	mov    %esp,%ebp
40de6e:	56                   	push   %esi
40de6f:	8b 75 08             	mov    0x8(%ebp),%esi
40de72:	57                   	push   %edi
40de73:	8b f9                	mov    %ecx,%edi
40de75:	85 f6                	test   %esi,%esi
40de77:	74 54                	je     0x40decd
40de79:	83 7e 18 00          	cmpl   $0x0,0x18(%esi)
40de7d:	74 08                	je     0x40de87
40de7f:	ff 76 18             	push   0x18(%esi)
40de82:	e8 e4 ff ff ff       	call   0x40de6b
40de87:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
40de8b:	75 46                	jne    0x40ded3
40de8d:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
40de91:	75 15                	jne    0x40dea8
40de93:	8b 7e 14             	mov    0x14(%esi),%edi
40de96:	85 ff                	test   %edi,%edi
40de98:	74 0e                	je     0x40dea8
40de9a:	8b cf                	mov    %edi,%ecx
40de9c:	e8 cf 01 00 00       	call   0x40e070
40dea1:	57                   	push   %edi
40dea2:	e8 b7 16 01 00       	call   0x41f55e
40dea7:	59                   	pop    %ecx
40dea8:	8b 46 0c             	mov    0xc(%esi),%eax
40deab:	ff 08                	decl   (%eax)
40dead:	8b 46 0c             	mov    0xc(%esi),%eax
40deb0:	83 38 00             	cmpl   $0x0,(%eax)
40deb3:	75 11                	jne    0x40dec6
40deb5:	ff 36                	push   (%esi)
40deb7:	e8 a2 16 01 00       	call   0x41f55e
40debc:	ff 76 0c             	push   0xc(%esi)
40debf:	e8 9a 16 01 00       	call   0x41f55e
40dec4:	59                   	pop    %ecx
40dec5:	59                   	pop    %ecx
40dec6:	56                   	push   %esi
40dec7:	e8 92 16 01 00       	call   0x41f55e
40decc:	59                   	pop    %ecx
40decd:	5f                   	pop    %edi
40dece:	5e                   	pop    %esi
40decf:	5d                   	pop    %ebp
40ded0:	c2 04 00             	ret    $0x4
40ded3:	ff 76 1c             	push   0x1c(%esi)
40ded6:	8b cf                	mov    %edi,%ecx
40ded8:	e8 8e ff ff ff       	call   0x40de6b
40dedd:	eb ae                	jmp    0x40de8d
40dedf:	55                   	push   %ebp
40dee0:	8b ec                	mov    %esp,%ebp
40dee2:	51                   	push   %ecx
40dee3:	51                   	push   %ecx
40dee4:	8b 45 08             	mov    0x8(%ebp),%eax
40dee7:	56                   	push   %esi
40dee8:	8b 40 04             	mov    0x4(%eax),%eax
40deeb:	8b 08                	mov    (%eax),%ecx
40deed:	e8 de 4d 00 00       	call   0x412cd0
40def2:	51                   	push   %ecx
40def3:	51                   	push   %ecx
40def4:	dd 1c 24             	fstpl  (%esp)
40def7:	e8 04 68 01 00       	call   0x424700
40defc:	8b 75 0c             	mov    0xc(%ebp),%esi
40deff:	dd 5d f8             	fstpl  -0x8(%ebp)
40df02:	83 c4 08             	add    $0x8,%esp
40df05:	8b ce                	mov    %esi,%ecx
40df07:	e8 14 4d 00 00       	call   0x412c20
40df0c:	dd 45 f8             	fldl   -0x8(%ebp)
40df0f:	dd 1e                	fstpl  (%esi)
40df11:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
40df18:	33 c0                	xor    %eax,%eax
40df1a:	5e                   	pop    %esi
40df1b:	c9                   	leave
40df1c:	c2 08 00             	ret    $0x8
40df1f:	55                   	push   %ebp
40df20:	8b ec                	mov    %esp,%ebp
40df22:	51                   	push   %ecx
40df23:	51                   	push   %ecx
40df24:	8b 45 08             	mov    0x8(%ebp),%eax
40df27:	56                   	push   %esi
40df28:	8b 40 04             	mov    0x4(%eax),%eax
40df2b:	8b 08                	mov    (%eax),%ecx
40df2d:	e8 9e 4d 00 00       	call   0x412cd0
40df32:	51                   	push   %ecx
40df33:	51                   	push   %ecx
40df34:	dd 1c 24             	fstpl  (%esp)
40df37:	e8 f4 68 01 00       	call   0x424830
40df3c:	8b 75 0c             	mov    0xc(%ebp),%esi
40df3f:	dd 5d f8             	fstpl  -0x8(%ebp)
40df42:	83 c4 08             	add    $0x8,%esp
40df45:	8b ce                	mov    %esi,%ecx
40df47:	e8 d4 4c 00 00       	call   0x412c20
40df4c:	dd 45 f8             	fldl   -0x8(%ebp)
40df4f:	dd 1e                	fstpl  (%esi)
40df51:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
40df58:	33 c0                	xor    %eax,%eax
40df5a:	5e                   	pop    %esi
40df5b:	c9                   	leave
40df5c:	c2 08 00             	ret    $0x8
40df5f:	55                   	push   %ebp
40df60:	8b ec                	mov    %esp,%ebp
40df62:	83 e4 f8             	and    $0xfffffff8,%esp
40df65:	83 ec 1c             	sub    $0x1c,%esp
40df68:	53                   	push   %ebx
40df69:	56                   	push   %esi
40df6a:	57                   	push   %edi
40df6b:	8b 7d 08             	mov    0x8(%ebp),%edi
40df6e:	8b f1                	mov    %ecx,%esi
40df70:	8b 47 04             	mov    0x4(%edi),%eax
40df73:	33 c9                	xor    %ecx,%ecx
40df75:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40df79:	89 4c 24 20          	mov    %ecx,0x20(%esp)
40df7d:	c7 44 24 24 01 00 00 	movl   $0x1,0x24(%esp)
40df84:	00
40df85:	8b 00                	mov    (%eax),%eax
40df87:	89 44 24 14          	mov    %eax,0x14(%esp)
40df8b:	0f bf 40 08          	movswl 0x8(%eax),%eax
40df8f:	83 cb ff             	or     $0xffffffff,%ebx
40df92:	89 4c 24 10          	mov    %ecx,0x10(%esp)
40df96:	2b c1                	sub    %ecx,%eax
40df98:	74 2a                	je     0x40dfc4
40df9a:	48                   	dec    %eax
40df9b:	0f 84 bb 8d 06 00    	je     0x476d5c
40dfa1:	83 e8 32             	sub    $0x32,%eax
40dfa4:	0f 85 2d 8d 06 00    	jne    0x476cd7
40dfaa:	57                   	push   %edi
40dfab:	8b ce                	mov    %esi,%ecx
40dfad:	e8 5e 11 00 00       	call   0x40f110
40dfb2:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40dfb6:	e8 65 4c 00 00       	call   0x412c20
40dfbb:	5f                   	pop    %edi
40dfbc:	5e                   	pop    %esi
40dfbd:	5b                   	pop    %ebx
40dfbe:	8b e5                	mov    %ebp,%esp
40dfc0:	5d                   	pop    %ebp
40dfc1:	c2 08 00             	ret    $0x8
40dfc4:	ff 75 0c             	push   0xc(%ebp)