40ebe5:	74 75                	je     0x40ec5c
40ebe7:	49                   	dec    %ecx
40ebe8:	83 e9 01             	sub    $0x1,%ecx
40ebeb:	74 46                	je     0x40ec33
40ebed:	83 e9 04             	sub    $0x4,%ecx
40ebf0:	74 27                	je     0x40ec19
40ebf2:	8b 46 08             	mov    0x8(%esi),%eax
40ebf5:	83 c0 18             	add    $0x18,%eax
40ebf8:	c6 40 04 01          	movb   $0x1,0x4(%eax)
40ebfc:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ec02:	ff 76 08             	push   0x8(%esi)
40ec05:	53                   	push   %ebx
40ec06:	53                   	push   %ebx
40ec07:	53                   	push   %ebx
40ec08:	53                   	push   %ebx
40ec09:	53                   	push   %ebx
40ec0a:	e8 62 e7 ff ff       	call   0x40d371
40ec0f:	83 c4 18             	add    $0x18,%esp
40ec12:	32 c0                	xor    %al,%al
40ec14:	e9 2d 01 00 00       	jmp    0x40ed46
40ec19:	8b 4e 10             	mov    0x10(%esi),%ecx
40ec1c:	8b 7e 1c             	mov    0x1c(%esi),%edi
40ec1f:	8b c7                	mov    %edi,%eax
40ec21:	c1 e8 04             	shr    $0x4,%eax
40ec24:	a8 01                	test   $0x1,%al
40ec26:	8d 41 08             	lea    0x8(%ecx),%eax
40ec29:	89 46 10             	mov    %eax,0x10(%esi)
40ec2c:	8b 01                	mov    (%ecx),%eax
40ec2e:	8b 51 04             	mov    0x4(%ecx),%edx
40ec31:	eb 66                	jmp    0x40ec99
40ec33:	8b 7e 1c             	mov    0x1c(%esi),%edi
40ec36:	8b c7                	mov    %edi,%eax
40ec38:	c1 e8 04             	shr    $0x4,%eax
40ec3b:	a8 01                	test   $0x1,%al
40ec3d:	74 0d                	je     0x40ec4c
40ec3f:	8b 46 10             	mov    0x10(%esi),%eax
40ec42:	8d 48 04             	lea    0x4(%eax),%ecx
40ec45:	89 4e 10             	mov    %ecx,0x10(%esi)
40ec48:	8b 00                	mov    (%eax),%eax
40ec4a:	eb 4c                	jmp    0x40ec98
40ec4c:	8b 4e 10             	mov    0x10(%esi),%ecx
40ec4f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40ec52:	8d 41 04             	lea    0x4(%ecx),%eax
40ec55:	89 46 10             	mov    %eax,0x10(%esi)
40ec58:	8b 01                	mov    (%ecx),%eax
40ec5a:	eb 40                	jmp    0x40ec9c
40ec5c:	8b 7e 1c             	mov    0x1c(%esi),%edi
40ec5f:	8b c7                	mov    %edi,%eax
40ec61:	8b 4e 10             	mov    0x10(%esi),%ecx
40ec64:	c1 e8 04             	shr    $0x4,%eax
40ec67:	a8 01                	test   $0x1,%al
40ec69:	8d 41 04             	lea    0x4(%ecx),%eax
40ec6c:	89 46 10             	mov    %eax,0x10(%esi)
40ec6f:	74 05                	je     0x40ec76
40ec71:	0f bf 01             	movswl (%ecx),%eax
40ec74:	eb 22                	jmp    0x40ec98
40ec76:	0f b7 01             	movzwl (%ecx),%eax
40ec79:	eb 1d                	jmp    0x40ec98
40ec7b:	8b 7e 1c             	mov    0x1c(%esi),%edi
40ec7e:	8b c7                	mov    %edi,%eax
40ec80:	8b 4e 10             	mov    0x10(%esi),%ecx
40ec83:	c1 e8 04             	shr    $0x4,%eax
40ec86:	a8 01                	test   $0x1,%al
40ec88:	8d 41 04             	lea    0x4(%ecx),%eax
40ec8b:	89 46 10             	mov    %eax,0x10(%esi)
40ec8e:	74 05                	je     0x40ec95
40ec90:	0f be 01             	movsbl (%ecx),%eax
40ec93:	eb 03                	jmp    0x40ec98
40ec95:	0f b6 01             	movzbl (%ecx),%eax
40ec98:	99                   	cltd
40ec99:	89 55 f8             	mov    %edx,-0x8(%ebp)
40ec9c:	8b 55 f8             	mov    -0x8(%ebp),%edx
40ec9f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40eca2:	8b c7                	mov    %edi,%eax
40eca4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eca7:	c1 e8 04             	shr    $0x4,%eax
40ecaa:	a8 01                	test   $0x1,%al
40ecac:	74 16                	je     0x40ecc4
40ecae:	3b d3                	cmp    %ebx,%edx
40ecb0:	7f 12                	jg     0x40ecc4
40ecb2:	7c 04                	jl     0x40ecb8
40ecb4:	3b cb                	cmp    %ebx,%ecx
40ecb6:	73 0c                	jae    0x40ecc4
40ecb8:	f7 d9                	neg    %ecx
40ecba:	13 d3                	adc    %ebx,%edx
40ecbc:	f7 da                	neg    %edx
40ecbe:	83 cf 40             	or     $0x40,%edi
40ecc1:	89 7e 1c             	mov    %edi,0x1c(%esi)
40ecc4:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
40ecc8:	89 55 f8             	mov    %edx,-0x8(%ebp)
40eccb:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ecce:	7d 09                	jge    0x40ecd9
40ecd0:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
40ecd7:	eb 1a                	jmp    0x40ecf3
40ecd9:	ff 76 08             	push   0x8(%esi)
40ecdc:	83 e7 f7             	and    $0xfffffff7,%edi
40ecdf:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40ece2:	ff 76 24             	push   0x24(%esi)
40ece5:	89 7e 1c             	mov    %edi,0x1c(%esi)
40ece8:	e8 b3 ed ff ff       	call   0x40daa0
40eced:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ecf0:	8b 55 f8             	mov    -0x8(%ebp),%edx
40ecf3:	8b c1                	mov    %ecx,%eax
40ecf5:	0b c2                	or     %edx,%eax
40ecf7:	75 04                	jne    0x40ecfd
40ecf9:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
40ecfd:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40ed01:	ff 75 08             	push   0x8(%ebp)
40ed04:	c6 46 38 01          	movb   $0x1,0x38(%esi)
40ed08:	75 0b                	jne    0x40ed15
40ed0a:	52                   	push   %edx
40ed0b:	51                   	push   %ecx
40ed0c:	8b ce                	mov    %esi,%ecx
40ed0e:	e8 27 06 00 00       	call   0x40f33a
40ed13:	eb 08                	jmp    0x40ed1d
40ed15:	51                   	push   %ecx
40ed16:	8b ce                	mov    %esi,%ecx
40ed18:	e8 a6 02 00 00       	call   0x40efc3
40ed1d:	8b 46 1c             	mov    0x1c(%esi),%eax
40ed20:	c1 e8 07             	shr    $0x7,%eax
40ed23:	a8 01                	test   $0x1,%al
40ed25:	74 1d                	je     0x40ed44
40ed27:	6a 30                	push   $0x30
40ed29:	5a                   	pop    %edx
40ed2a:	39 5e 34             	cmp    %ebx,0x34(%esi)
40ed2d:	74 08                	je     0x40ed37
40ed2f:	8b 46 30             	mov    0x30(%esi),%eax
40ed32:	66 39 10             	cmp    %dx,(%eax)
40ed35:	74 0d                	je     0x40ed44
40ed37:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
40ed3b:	8b 4e 30             	mov    0x30(%esi),%ecx
40ed3e:	66 89 11             	mov    %dx,(%ecx)
40ed41:	ff 46 34             	incl   0x34(%esi)
40ed44:	b0 01                	mov    $0x1,%al
40ed46:	5f                   	pop    %edi
40ed47:	5e                   	pop    %esi
40ed48:	5b                   	pop    %ebx
40ed49:	c9                   	leave
40ed4a:	c2 04 00             	ret    $0x4
40ed4d:	8b ff                	mov    %edi,%edi
40ed4f:	55                   	push   %ebp
40ed50:	8b ec                	mov    %esp,%ebp
40ed52:	53                   	push   %ebx
40ed53:	56                   	push   %esi
40ed54:	8b f1                	mov    %ecx,%esi
40ed56:	57                   	push   %edi
40ed57:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40ed5a:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40ed60:	85 ff                	test   %edi,%edi
40ed62:	75 02                	jne    0x40ed66
40ed64:	8b f9                	mov    %ecx,%edi
40ed66:	e8 83 ec ff ff       	call   0x40d9ee
40ed6b:	8b 55 08             	mov    0x8(%ebp),%edx
40ed6e:	8d 48 ff             	lea    -0x1(%eax),%ecx
40ed71:	03 cf                	add    %edi,%ecx
40ed73:	89 4e 30             	mov    %ecx,0x30(%esi)
40ed76:	8b c1                	mov    %ecx,%eax
40ed78:	8b d9                	mov    %ecx,%ebx
40ed7a:	8b 7e 24             	mov    0x24(%esi),%edi
40ed7d:	85 ff                	test   %edi,%edi
40ed7f:	7f 04                	jg     0x40ed85
40ed81:	85 d2                	test   %edx,%edx
40ed83:	74 1b                	je     0x40eda0
40ed85:	8d 47 ff             	lea    -0x1(%edi),%eax
40ed88:	89 46 24             	mov    %eax,0x24(%esi)
40ed8b:	8a c2                	mov    %dl,%al
40ed8d:	24 07                	and    $0x7,%al
40ed8f:	c1 ea 03             	shr    $0x3,%edx
40ed92:	04 30                	add    $0x30,%al
40ed94:	88 03                	mov    %al,(%ebx)
40ed96:	ff 4e 30             	decl   0x30(%esi)
40ed99:	8b 46 30             	mov    0x30(%esi),%eax
40ed9c:	8b d8                	mov    %eax,%ebx
40ed9e:	eb da                	jmp    0x40ed7a
40eda0:	2b c8                	sub    %eax,%ecx
40eda2:	40                   	inc    %eax
40eda3:	89 4e 34             	mov    %ecx,0x34(%esi)
40eda6:	5f                   	pop    %edi
40eda7:	89 46 30             	mov    %eax,0x30(%esi)
40edaa:	5e                   	pop    %esi
40edab:	5b                   	pop    %ebx
40edac:	5d                   	pop    %ebp
40edad:	c2 08 00             	ret    $0x8
40edb0:	8b ff                	mov    %edi,%edi
40edb2:	55                   	push   %ebp
40edb3:	8b ec                	mov    %esp,%ebp
40edb5:	51                   	push   %ecx
40edb6:	51                   	push   %ecx
40edb7:	53                   	push   %ebx
40edb8:	56                   	push   %esi
40edb9:	8b f1                	mov    %ecx,%esi
40edbb:	57                   	push   %edi
40edbc:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40edbf:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40edc5:	85 ff                	test   %edi,%edi
40edc7:	75 02                	jne    0x40edcb
40edc9:	8b f9                	mov    %ecx,%edi
40edcb:	e8 36 ec ff ff       	call   0x40da06
40edd0:	8b 55 08             	mov    0x8(%ebp),%edx
40edd3:	48                   	dec    %eax
40edd4:	8d 0c 47             	lea    (%edi,%eax,2),%ecx
40edd7:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40edda:	8b c1                	mov    %ecx,%eax
40eddc:	89 4e 30             	mov    %ecx,0x30(%esi)
40eddf:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ede2:	8b 5e 24             	mov    0x24(%esi),%ebx
40ede5:	8b fa                	mov    %edx,%edi
40ede7:	85 db                	test   %ebx,%ebx
40ede9:	7f 04                	jg     0x40edef
40edeb:	85 d2                	test   %edx,%edx
40eded:	74 1d                	je     0x40ee0c
40edef:	83 e7 07             	and    $0x7,%edi
40edf2:	c1 ea 03             	shr    $0x3,%edx
40edf5:	8d 43 ff             	lea    -0x1(%ebx),%eax
40edf8:	83 c7 30             	add    $0x30,%edi
40edfb:	89 46 24             	mov    %eax,0x24(%esi)
40edfe:	66 89 39             	mov    %di,(%ecx)
40ee01:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
40ee05:	8b 46 30             	mov    0x30(%esi),%eax
40ee08:	8b c8                	mov    %eax,%ecx
40ee0a:	eb d6                	jmp    0x40ede2
40ee0c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ee0f:	2b c8                	sub    %eax,%ecx
40ee11:	d1 f9                	sar    $1,%ecx
40ee13:	83 c0 02             	add    $0x2,%eax
40ee16:	89 4e 34             	mov    %ecx,0x34(%esi)
40ee19:	5f                   	pop    %edi
40ee1a:	89 46 30             	mov    %eax,0x30(%esi)
40ee1d:	5e                   	pop    %esi
40ee1e:	5b                   	pop    %ebx
40ee1f:	c9                   	leave
40ee20:	c2 08 00             	ret    $0x8
40ee23:	8b ff                	mov    %edi,%edi
40ee25:	55                   	push   %ebp
40ee26:	8b ec                	mov    %esp,%ebp
40ee28:	51                   	push   %ecx
40ee29:	51                   	push   %ecx
40ee2a:	53                   	push   %ebx
40ee2b:	56                   	push   %esi
40ee2c:	8b f1                	mov    %ecx,%esi
40ee2e:	57                   	push   %edi
40ee2f:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40ee32:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40ee38:	85 ff                	test   %edi,%edi
40ee3a:	75 02                	jne    0x40ee3e
40ee3c:	8b f9                	mov    %ecx,%edi
40ee3e:	e8 ab eb ff ff       	call   0x40d9ee
40ee43:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ee46:	48                   	dec    %eax
40ee47:	03 f8                	add    %eax,%edi
40ee49:	89 7d f8             	mov    %edi,-0x8(%ebp)
40ee4c:	8b c7                	mov    %edi,%eax
40ee4e:	89 7e 30             	mov    %edi,0x30(%esi)
40ee51:	89 7d fc             	mov    %edi,-0x4(%ebp)
40ee54:	8b 4e 24             	mov    0x24(%esi),%ecx
40ee57:	85 c9                	test   %ecx,%ecx
40ee59:	7f 04                	jg     0x40ee5f
40ee5b:	85 db                	test   %ebx,%ebx
40ee5d:	74 38                	je     0x40ee97
40ee5f:	49                   	dec    %ecx
40ee60:	33 d2                	xor    %edx,%edx
40ee62:	6a 0a                	push   $0xa
40ee64:	89 4e 24             	mov    %ecx,0x24(%esi)
40ee67:	8b c3                	mov    %ebx,%eax
40ee69:	59                   	pop    %ecx
40ee6a:	f7 f1                	div    %ecx
40ee6c:	8b c3                	mov    %ebx,%eax
40ee6e:	6a 0a                	push   $0xa
40ee70:	5b                   	pop    %ebx
40ee71:	8d 4a 30             	lea    0x30(%edx),%ecx
40ee74:	33 d2                	xor    %edx,%edx
40ee76:	f7 f3                	div    %ebx
40ee78:	8b d8                	mov    %eax,%ebx
40ee7a:	80 f9 39             	cmp    $0x39,%cl
40ee7d:	7e 0c                	jle    0x40ee8b
40ee7f:	8a 45 0c             	mov    0xc(%ebp),%al
40ee82:	34 01                	xor    $0x1,%al
40ee84:	c0 e0 05             	shl    $0x5,%al
40ee87:	04 07                	add    $0x7,%al
40ee89:	02 c8                	add    %al,%cl
40ee8b:	88 0f                	mov    %cl,(%edi)
40ee8d:	ff 4e 30             	decl   0x30(%esi)
40ee90:	8b 46 30             	mov    0x30(%esi),%eax
40ee93:	8b f8                	mov    %eax,%edi
40ee95:	eb bd                	jmp    0x40ee54
40ee97:	8b 7d f8             	mov    -0x8(%ebp),%edi
40ee9a:	2b f8                	sub    %eax,%edi
40ee9c:	40                   	inc    %eax
40ee9d:	89 7e 34             	mov    %edi,0x34(%esi)
40eea0:	5f                   	pop    %edi
40eea1:	89 46 30             	mov    %eax,0x30(%esi)
40eea4:	5e                   	pop    %esi
40eea5:	5b                   	pop    %ebx
40eea6:	c9                   	leave
40eea7:	c2 08 00             	ret    $0x8
40eeaa:	8b ff                	mov    %edi,%edi
40eeac:	55                   	push   %ebp
40eead:	8b ec                	mov    %esp,%ebp
40eeaf:	51                   	push   %ecx
40eeb0:	51                   	push   %ecx
40eeb1:	53                   	push   %ebx
40eeb2:	56                   	push   %esi
40eeb3:	8b f1                	mov    %ecx,%esi
40eeb5:	57                   	push   %edi
40eeb6:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40eeb9:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40eebf:	85 ff                	test   %edi,%edi
40eec1:	75 02                	jne    0x40eec5
40eec3:	8b f9                	mov    %ecx,%edi
40eec5:	e8 3c eb ff ff       	call   0x40da06
40eeca:	8b 5d 08             	mov    0x8(%ebp),%ebx
40eecd:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40eed0:	83 c7 fe             	add    $0xfffffffe,%edi
40eed3:	89 7d f8             	mov    %edi,-0x8(%ebp)
40eed6:	8b c7                	mov    %edi,%eax
40eed8:	89 7e 30             	mov    %edi,0x30(%esi)
40eedb:	89 7d fc             	mov    %edi,-0x4(%ebp)
40eede:	8b 4e 24             	mov    0x24(%esi),%ecx
40eee1:	85 c9                	test   %ecx,%ecx
40eee3:	7f 04                	jg     0x40eee9
40eee5:	85 db                	test   %ebx,%ebx
40eee7:	74 46                	je     0x40ef2f
40eee9:	49                   	dec    %ecx
40eeea:	33 d2                	xor    %edx,%edx
40eeec:	6a 0a                	push   $0xa
40eeee:	89 4e 24             	mov    %ecx,0x24(%esi)
40eef1:	8b c3                	mov    %ebx,%eax
40eef3:	59                   	pop    %ecx
40eef4:	f7 f1                	div    %ecx
40eef6:	8b c3                	mov    %ebx,%eax
40eef8:	83 c2 30             	add    $0x30,%edx
40eefb:	0f b7 ca             	movzwl %dx,%ecx
40eefe:	33 d2                	xor    %edx,%edx
40ef00:	6a 0a                	push   $0xa
40ef02:	5b                   	pop    %ebx
40ef03:	f7 f3                	div    %ebx
40ef05:	8b d8                	mov    %eax,%ebx
40ef07:	83 f9 39             	cmp    $0x39,%ecx
40ef0a:	76 11                	jbe    0x40ef1d
40ef0c:	8a 45 0c             	mov    0xc(%ebp),%al
40ef0f:	34 01                	xor    $0x1,%al
40ef11:	c0 e0 05             	shl    $0x5,%al
40ef14:	04 07                	add    $0x7,%al
40ef16:	02 c1                	add    %cl,%al
40ef18:	66 98                	cbtw
40ef1a:	0f b7 c8             	movzwl %ax,%ecx
40ef1d:	66 0f be c1          	movsbw %cl,%ax
40ef21:	66 89 07             	mov    %ax,(%edi)
40ef24:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
40ef28:	8b 46 30             	mov    0x30(%esi),%eax