4107e6:	8b ff                	mov    %edi,%edi
4107e8:	56                   	push   %esi
4107e9:	8b f1                	mov    %ecx,%esi
4107eb:	8b 46 04             	mov    0x4(%esi),%eax
4107ee:	8b 0e                	mov    (%esi),%ecx
4107f0:	0f b6 00             	movzbl (%eax),%eax
4107f3:	50                   	push   %eax
4107f4:	e8 f1 33 00 00       	call   0x413bea
4107f9:	8b 46 04             	mov    0x4(%esi),%eax
4107fc:	c6 00 00             	movb   $0x0,(%eax)
4107ff:	8b 46 08             	mov    0x8(%esi),%eax
410802:	8b 0e                	mov    (%esi),%ecx
410804:	ff 70 04             	push   0x4(%eax)
410807:	ff 30                	push   (%eax)
410809:	e8 1c 2e 00 00       	call   0x41362a
41080e:	5e                   	pop    %esi
41080f:	c3                   	ret
410810:	8b ff                	mov    %edi,%edi
410812:	56                   	push   %esi
410813:	8b f1                	mov    %ecx,%esi
410815:	8b 46 04             	mov    0x4(%esi),%eax
410818:	8b 0e                	mov    (%esi),%ecx
41081a:	0f b6 00             	movzbl (%eax),%eax
41081d:	50                   	push   %eax
41081e:	e8 c7 33 00 00       	call   0x413bea
410823:	8b 46 04             	mov    0x4(%esi),%eax
410826:	c6 00 00             	movb   $0x0,(%eax)
410829:	8b 46 08             	mov    0x8(%esi),%eax
41082c:	8b 0e                	mov    (%esi),%ecx
41082e:	ff 70 04             	push   0x4(%eax)
410831:	ff 30                	push   (%eax)
410833:	e8 f2 2d 00 00       	call   0x41362a
410838:	5e                   	pop    %esi
410839:	c3                   	ret
41083a:	8b ff                	mov    %edi,%edi
41083c:	56                   	push   %esi
41083d:	8b f1                	mov    %ecx,%esi
41083f:	8b 46 04             	mov    0x4(%esi),%eax
410842:	8b 0e                	mov    (%esi),%ecx
410844:	0f b6 00             	movzbl (%eax),%eax
410847:	50                   	push   %eax
410848:	e8 9d 33 00 00       	call   0x413bea
41084d:	8b 46 04             	mov    0x4(%esi),%eax
410850:	c6 00 00             	movb   $0x0,(%eax)
410853:	8b 46 08             	mov    0x8(%esi),%eax
410856:	8b 0e                	mov    (%esi),%ecx
410858:	ff 70 04             	push   0x4(%eax)
41085b:	ff 30                	push   (%eax)
41085d:	e8 c8 2d 00 00       	call   0x41362a
410862:	5e                   	pop    %esi
410863:	c3                   	ret
410864:	8b ff                	mov    %edi,%edi
410866:	53                   	push   %ebx
410867:	56                   	push   %esi
410868:	8b f1                	mov    %ecx,%esi
41086a:	33 db                	xor    %ebx,%ebx
41086c:	39 5e 0c             	cmp    %ebx,0xc(%esi)
41086f:	74 07                	je     0x410878
410871:	32 c0                	xor    %al,%al
410873:	e9 09 01 00 00       	jmp    0x410981
410878:	8b 46 08             	mov    0x8(%esi),%eax
41087b:	89 5e 10             	mov    %ebx,0x10(%esi)
41087e:	66 89 5e 14          	mov    %bx,0x14(%esi)
410882:	88 5e 16             	mov    %bl,0x16(%esi)
410885:	89 5e 18             	mov    %ebx,0x18(%esi)
410888:	89 5e 1c             	mov    %ebx,0x1c(%esi)
41088b:	89 5e 20             	mov    %ebx,0x20(%esi)
41088e:	88 5e 24             	mov    %bl,0x24(%esi)
410891:	89 5e 28             	mov    %ebx,0x28(%esi)
410894:	38 18                	cmp    %bl,(%eax)
410896:	75 09                	jne    0x4108a1
410898:	c7 46 10 01 00 00 00 	movl   $0x1,0x10(%esi)
41089f:	eb d0                	jmp    0x410871
4108a1:	0f b6 00             	movzbl (%eax),%eax
4108a4:	50                   	push   %eax
4108a5:	e8 a5 3c 00 00       	call   0x41454f
4108aa:	59                   	pop    %ecx
4108ab:	85 c0                	test   %eax,%eax
4108ad:	74 24                	je     0x4108d3
4108af:	c7 46 10 02 00 00 00 	movl   $0x2,0x10(%esi)
4108b6:	eb 03                	jmp    0x4108bb
4108b8:	ff 46 08             	incl   0x8(%esi)
4108bb:	8b 46 08             	mov    0x8(%esi),%eax
4108be:	0f b6 00             	movzbl (%eax),%eax
4108c1:	50                   	push   %eax
4108c2:	e8 88 3c 00 00       	call   0x41454f
4108c7:	59                   	pop    %ecx
4108c8:	85 c0                	test   %eax,%eax
4108ca:	75 ec                	jne    0x4108b8
4108cc:	b0 01                	mov    $0x1,%al
4108ce:	e9 ae 00 00 00       	jmp    0x410981
4108d3:	8b 4e 08             	mov    0x8(%esi),%ecx
4108d6:	80 39 25             	cmpb   $0x25,(%ecx)
4108d9:	0f 85 80 00 00 00    	jne    0x41095f
4108df:	8d 41 01             	lea    0x1(%ecx),%eax
4108e2:	80 38 25             	cmpb   $0x25,(%eax)
4108e5:	74 78                	je     0x41095f
4108e7:	c7 46 10 04 00 00 00 	movl   $0x4,0x10(%esi)
4108ee:	89 46 08             	mov    %eax,0x8(%esi)
4108f1:	80 38 2a             	cmpb   $0x2a,(%eax)
4108f4:	75 08                	jne    0x4108fe
4108f6:	40                   	inc    %eax
4108f7:	c6 46 16 01          	movb   $0x1,0x16(%esi)
4108fb:	89 46 08             	mov    %eax,0x8(%esi)
4108fe:	8b ce                	mov    %esi,%ecx
410900:	e8 b5 2e 00 00       	call   0x4137ba
410905:	84 c0                	test   %al,%al
410907:	0f 84 64 ff ff ff    	je     0x410871
41090d:	8b ce                	mov    %esi,%ecx
41090f:	e8 45 2f 00 00       	call   0x413859
410914:	8b ce                	mov    %esi,%ecx
410916:	e8 b3 30 00 00       	call   0x4139ce
41091b:	8b ce                	mov    %esi,%ecx
41091d:	e8 2d 2d 00 00       	call   0x41364f
410922:	84 c0                	test   %al,%al
410924:	0f 84 47 ff ff ff    	je     0x410871
41092a:	6b 4e 28 0c          	imul   $0xc,0x28(%esi),%ecx
41092e:	8b 46 20             	mov    0x20(%esi),%eax
410931:	38 9c 01 50 ba 42 00 	cmp    %bl,0x42ba50(%ecx,%eax,1)
410938:	75 92                	jne    0x4108cc
41093a:	89 5e 10             	mov    %ebx,0x10(%esi)
41093d:	66 89 5e 14          	mov    %bx,0x14(%esi)
410941:	88 5e 16             	mov    %bl,0x16(%esi)
410944:	89 5e 18             	mov    %ebx,0x18(%esi)
410947:	89 5e 1c             	mov    %ebx,0x1c(%esi)
41094a:	89 5e 20             	mov    %ebx,0x20(%esi)
41094d:	88 5e 24             	mov    %bl,0x24(%esi)
410950:	89 5e 28             	mov    %ebx,0x28(%esi)
410953:	c7 46 0c 16 00 00 00 	movl   $0x16,0xc(%esi)
41095a:	e9 12 ff ff ff       	jmp    0x410871
41095f:	c7 46 10 03 00 00 00 	movl   $0x3,0x10(%esi)
410966:	8a 01                	mov    (%ecx),%al
410968:	88 46 14             	mov    %al,0x14(%esi)
41096b:	33 c0                	xor    %eax,%eax
41096d:	80 39 25             	cmpb   $0x25,(%ecx)
410970:	53                   	push   %ebx
410971:	0f 94 c0             	sete   %al
410974:	41                   	inc    %ecx
410975:	03 c1                	add    %ecx,%eax
410977:	8b ce                	mov    %esi,%ecx
410979:	89 46 08             	mov    %eax,0x8(%esi)
41097c:	e8 f8 2f 00 00       	call   0x413979
410981:	5e                   	pop    %esi
410982:	5b                   	pop    %ebx
410983:	c3                   	ret
410984:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
410988:	74 03                	je     0x41098d
41098a:	8b 01                	mov    (%ecx),%eax
41098c:	c3                   	ret
41098d:	6a 00                	push   $0x0
41098f:	68 9f 01 00 00       	push   $0x19f
410994:	68 f8 b8 42 00       	push   $0x42b8f8
410999:	68 60 b9 42 00       	push   $0x42b960
41099e:	68 bc b9 42 00       	push   $0x42b9bc
4109a3:	e8 67 b3 ff ff       	call   0x40bd0f
4109a8:	cc                   	int3
4109a9:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
4109ad:	75 03                	jne    0x4109b2
4109af:	8b 01                	mov    (%ecx),%eax
4109b1:	c3                   	ret
4109b2:	6a 00                	push   $0x0
4109b4:	68 a5 01 00 00       	push   $0x1a5
4109b9:	68 f8 b8 42 00       	push   $0x42b8f8
4109be:	68 d8 b9 42 00       	push   $0x42b9d8
4109c3:	68 34 ba 42 00       	push   $0x42ba34
4109c8:	e8 42 b3 ff ff       	call   0x40bd0f
4109cd:	cc                   	int3
4109ce:	8b ff                	mov    %edi,%edi
4109d0:	55                   	push   %ebp
4109d1:	8b ec                	mov    %esp,%ebp
4109d3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4109d6:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
4109da:	74 12                	je     0x4109ee
4109dc:	e8 a3 ff ff ff       	call   0x410984
4109e1:	50                   	push   %eax
4109e2:	ff 75 08             	push   0x8(%ebp)
4109e5:	e8 53 e9 ff ff       	call   0x40f33d
4109ea:	59                   	pop    %ecx
4109eb:	59                   	pop    %ecx
4109ec:	5d                   	pop    %ebp
4109ed:	c3                   	ret
4109ee:	e8 b6 ff ff ff       	call   0x4109a9
4109f3:	33 c9                	xor    %ecx,%ecx
4109f5:	38 4d 08             	cmp    %cl,0x8(%ebp)
4109f8:	0f 95 c1             	setne  %cl
4109fb:	c1 e1 1f             	shl    $0x1f,%ecx
4109fe:	81 c9 00 00 80 7f    	or     $0x7f800000,%ecx
410a04:	89 08                	mov    %ecx,(%eax)
410a06:	5d                   	pop    %ebp
410a07:	c3                   	ret
410a08:	8b ff                	mov    %edi,%edi
410a0a:	55                   	push   %ebp
410a0b:	8b ec                	mov    %esp,%ebp
410a0d:	83 ec 24             	sub    $0x24,%esp
410a10:	53                   	push   %ebx
410a11:	56                   	push   %esi
410a12:	8b 75 0c             	mov    0xc(%ebp),%esi
410a15:	33 db                	xor    %ebx,%ebx
410a17:	57                   	push   %edi
410a18:	8b 7d 08             	mov    0x8(%ebp),%edi
410a1b:	3b f3                	cmp    %ebx,%esi
410a1d:	77 16                	ja     0x410a35
410a1f:	83 ff ff             	cmp    $0xffffffff,%edi
410a22:	77 11                	ja     0x410a35
410a24:	0f bd c7             	bsr    %edi,%eax
410a27:	89 5d dc             	mov    %ebx,-0x24(%ebp)
410a2a:	74 05                	je     0x410a31
410a2c:	8d 48 01             	lea    0x1(%eax),%ecx
410a2f:	eb 14                	jmp    0x410a45
410a31:	8b cb                	mov    %ebx,%ecx
410a33:	eb 10                	jmp    0x410a45
410a35:	0f bd c6             	bsr    %esi,%eax
410a38:	89 5d dc             	mov    %ebx,-0x24(%ebp)
410a3b:	8d 48 01             	lea    0x1(%eax),%ecx
410a3e:	75 02                	jne    0x410a42
410a40:	8b cb                	mov    %ebx,%ecx
410a42:	83 c1 20             	add    $0x20,%ecx
410a45:	8b 45 1c             	mov    0x1c(%ebp),%eax
410a48:	33 d2                	xor    %edx,%edx
410a4a:	8a 40 04             	mov    0x4(%eax),%al
410a4d:	84 c0                	test   %al,%al
410a4f:	88 45 ff             	mov    %al,-0x1(%ebp)
410a52:	0f 94 c2             	sete   %dl
410a55:	33 c0                	xor    %eax,%eax
410a57:	4a                   	dec    %edx
410a58:	83 e2 1d             	and    $0x1d,%edx
410a5b:	83 c2 18             	add    $0x18,%edx
410a5e:	2b d1                	sub    %ecx,%edx
410a60:	8b 4d 10             	mov    0x10(%ebp),%ecx
410a63:	2b ca                	sub    %edx,%ecx
410a65:	89 55 f4             	mov    %edx,-0xc(%ebp)
410a68:	38 45 ff             	cmp    %al,-0x1(%ebp)
410a6b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
410a6e:	0f 94 c0             	sete   %al
410a71:	48                   	dec    %eax
410a72:	25 80 03 00 00       	and    $0x380,%eax
410a77:	83 c0 7f             	add    $0x7f,%eax
410a7a:	89 45 f0             	mov    %eax,-0x10(%ebp)
410a7d:	3b c8                	cmp    %eax,%ecx
410a7f:	7e 15                	jle    0x410a96
410a81:	ff 75 1c             	push   0x1c(%ebp)
410a84:	ff 75 14             	push   0x14(%ebp)
410a87:	e8 42 ff ff ff       	call   0x4109ce
410a8c:	59                   	pop    %ecx
410a8d:	59                   	pop    %ecx
410a8e:	6a 03                	push   $0x3
410a90:	58                   	pop    %eax
410a91:	e9 b7 02 00 00       	jmp    0x410d4d
410a96:	33 c0                	xor    %eax,%eax
410a98:	38 45 ff             	cmp    %al,-0x1(%ebp)
410a9b:	0f 94 c0             	sete   %al
410a9e:	48                   	dec    %eax
410a9f:	25 80 fc ff ff       	and    $0xfffffc80,%eax
410aa4:	83 c0 82             	add    $0xffffff82,%eax
410aa7:	3b c8                	cmp    %eax,%ecx
410aa9:	0f 8d 35 01 00 00    	jge    0x410be4
410aaf:	8b 45 f0             	mov    -0x10(%ebp),%eax
410ab2:	48                   	dec    %eax
410ab3:	03 c1                	add    %ecx,%eax
410ab5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
410ab8:	03 c2                	add    %edx,%eax
410aba:	f7 d9                	neg    %ecx
410abc:	89 45 ec             	mov    %eax,-0x14(%ebp)
410abf:	89 4d f8             	mov    %ecx,-0x8(%ebp)
410ac2:	85 c0                	test   %eax,%eax
410ac4:	0f 89 12 01 00 00    	jns    0x410bdc
410aca:	f7 d8                	neg    %eax
410acc:	89 45 f0             	mov    %eax,-0x10(%ebp)
410acf:	83 f8 40             	cmp    $0x40,%eax
410ad2:	0f 83 f0 00 00 00    	jae    0x410bc8
410ad8:	8d 48 ff             	lea    -0x1(%eax),%ecx
410adb:	33 d2                	xor    %edx,%edx
410add:	33 c0                	xor    %eax,%eax
410adf:	40                   	inc    %eax
410ae0:	e8 eb 58 01 00       	call   0x4263d0
410ae5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
410ae8:	89 45 e8             	mov    %eax,-0x18(%ebp)
410aeb:	83 c0 ff             	add    $0xffffffff,%eax
410aee:	89 45 e0             	mov    %eax,-0x20(%ebp)
410af1:	8b c2                	mov    %edx,%eax
410af3:	83 d0 ff             	adc    $0xffffffff,%eax
410af6:	89 55 e4             	mov    %edx,-0x1c(%ebp)
410af9:	89 45 dc             	mov    %eax,-0x24(%ebp)
410afc:	33 d2                	xor    %edx,%edx
410afe:	33 c0                	xor    %eax,%eax
410b00:	40                   	inc    %eax
410b01:	e8 ca 58 01 00       	call   0x4263d0
410b06:	23 c7                	and    %edi,%eax
410b08:	c6 45 fd 01          	movb   $0x1,-0x3(%ebp)
410b0c:	23 d6                	and    %esi,%edx
410b0e:	0b c2                	or     %edx,%eax
410b10:	75 03                	jne    0x410b15
410b12:	88 5d fd             	mov    %bl,-0x3(%ebp)
410b15:	8b 45 e8             	mov    -0x18(%ebp),%eax
410b18:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
410b1b:	23 c7                	and    %edi,%eax
410b1d:	23 ce                	and    %esi,%ecx
410b1f:	0b c1                	or     %ecx,%eax
410b21:	b1 01                	mov    $0x1,%cl
410b23:	75 02                	jne    0x410b27
410b25:	8a cb                	mov    %bl,%cl
410b27:	88 4d ff             	mov    %cl,-0x1(%ebp)
410b2a:	38 5d 18             	cmp    %bl,0x18(%ebp)
410b2d:	74 10                	je     0x410b3f
410b2f:	8b 45 e0             	mov    -0x20(%ebp),%eax
410b32:	8b 55 dc             	mov    -0x24(%ebp),%edx
410b35:	23 c7                	and    %edi,%eax
410b37:	23 d6                	and    %esi,%edx
410b39:	0b c2                	or     %edx,%eax
410b3b:	8a c3                	mov    %bl,%al
410b3d:	74 02                	je     0x410b41
410b3f:	b0 01                	mov    $0x1,%al
410b41:	88 45 fe             	mov    %al,-0x2(%ebp)
410b44:	84 c9                	test   %cl,%cl
410b46:	75 04                	jne    0x410b4c
410b48:	84 c0                	test   %al,%al
410b4a:	74 35                	je     0x410b81
410b4c:	e8 b1 9e 00 00       	call   0x41aa02
410b51:	85 c0                	test   %eax,%eax
410b53:	74 1b                	je     0x410b70
410b55:	3d 00 01 00 00       	cmp    $0x100,%eax
410b5a:	74 0c                	je     0x410b68
410b5c:	3d 00 02 00 00       	cmp    $0x200,%eax
410b61:	75 1e                	jne    0x410b81
410b63:	8a 5d 14             	mov    0x14(%ebp),%bl
410b66:	eb 19                	jmp    0x410b81
410b68:	38 5d 14             	cmp    %bl,0x14(%ebp)
410b6b:	0f 94 c3             	sete   %bl
410b6e:	eb 11                	jmp    0x410b81
410b70:	38 5d ff             	cmp    %bl,-0x1(%ebp)
410b73:	74 0c                	je     0x410b81
410b75:	38 5d fe             	cmp    %bl,-0x2(%ebp)
410b78:	75 05                	jne    0x410b7f
410b7a:	38 5d fd             	cmp    %bl,-0x3(%ebp)
410b7d:	74 02                	je     0x410b81
410b7f:	b3 01                	mov    $0x1,%bl
410b81:	8b 4d f0             	mov    -0x10(%ebp),%ecx
410b84:	8b c7                	mov    %edi,%eax
410b86:	8b d6                	mov    %esi,%edx
410b88:	e8 63 58 01 00       	call   0x4263f0
410b8d:	8b f8                	mov    %eax,%edi
410b8f:	8b f2                	mov    %edx,%esi
410b91:	0f b6 c3             	movzbl %bl,%eax
410b94:	99                   	cltd
410b95:	03 f8                	add    %eax,%edi
410b97:	8b c7                	mov    %edi,%eax
410b99:	13 f2                	adc    %edx,%esi
410b9b:	0b c6                	or     %esi,%eax
410b9d:	74 29                	je     0x410bc8
410b9f:	8b 4d 1c             	mov    0x1c(%ebp),%ecx