407cbf:	c1 c8 02             	ror    $0x2,%eax
407cc2:	8d b4 16 dc bc 1b 8f 	lea    -0x70e44324(%esi,%edx,1),%esi
407cc9:	8b 55 fc             	mov    -0x4(%ebp),%edx
407ccc:	89 55 f4             	mov    %edx,-0xc(%ebp)
407ccf:	8b d1                	mov    %ecx,%edx
407cd1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407cd4:	8b f8                	mov    %eax,%edi
407cd6:	0b f9                	or     %ecx,%edi
407cd8:	23 fa                	and    %edx,%edi
407cda:	89 55 fc             	mov    %edx,-0x4(%ebp)
407cdd:	89 75 f8             	mov    %esi,-0x8(%ebp)
407ce0:	8b d0                	mov    %eax,%edx
407ce2:	23 d1                	and    %ecx,%edx
407ce4:	0b fa                	or     %edx,%edi
407ce6:	03 bc 9d c4 fe ff ff 	add    -0x13c(%ebp,%ebx,4),%edi
407ced:	8b 55 fc             	mov    -0x4(%ebp),%edx
407cf0:	c1 c6 05             	rol    $0x5,%esi
407cf3:	03 75 f4             	add    -0xc(%ebp),%esi
407cf6:	89 55 f4             	mov    %edx,-0xc(%ebp)
407cf9:	8d b4 37 dc bc 1b 8f 	lea    -0x70e44324(%edi,%esi,1),%esi
407d00:	8b d0                	mov    %eax,%edx
407d02:	8b 45 f8             	mov    -0x8(%ebp),%eax
407d05:	c1 c9 02             	ror    $0x2,%ecx
407d08:	89 75 f8             	mov    %esi,-0x8(%ebp)
407d0b:	83 c3 05             	add    $0x5,%ebx
407d0e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407d11:	83 fb 3c             	cmp    $0x3c,%ebx
407d14:	0f 8c f9 fe ff ff    	jl     0x407c13
407d1a:	bf 3c 00 00 00       	mov    $0x3c,%edi
407d1f:	89 7d fc             	mov    %edi,-0x4(%ebp)
407d22:	c1 c6 05             	rol    $0x5,%esi
407d25:	03 75 f4             	add    -0xc(%ebp),%esi
407d28:	8b da                	mov    %edx,%ebx
407d2a:	33 d9                	xor    %ecx,%ebx
407d2c:	33 d8                	xor    %eax,%ebx
407d2e:	03 9c bd b4 fe ff ff 	add    -0x14c(%ebp,%edi,4),%ebx
407d35:	8b 7d fc             	mov    -0x4(%ebp),%edi
407d38:	c1 c8 02             	ror    $0x2,%eax
407d3b:	8d b4 33 d6 c1 62 ca 	lea    -0x359d3e2a(%ebx,%esi,1),%esi
407d42:	8b 5d f8             	mov    -0x8(%ebp),%ebx
407d45:	89 55 f4             	mov    %edx,-0xc(%ebp)
407d48:	89 75 f8             	mov    %esi,-0x8(%ebp)
407d4b:	c1 c6 05             	rol    $0x5,%esi
407d4e:	03 75 f4             	add    -0xc(%ebp),%esi
407d51:	8b d1                	mov    %ecx,%edx
407d53:	33 d0                	xor    %eax,%edx
407d55:	33 d3                	xor    %ebx,%edx
407d57:	03 94 bd b8 fe ff ff 	add    -0x148(%ebp,%edi,4),%edx
407d5e:	c1 cb 02             	ror    $0x2,%ebx
407d61:	8d 94 32 d6 c1 62 ca 	lea    -0x359d3e2a(%edx,%esi,1),%edx
407d68:	8b f0                	mov    %eax,%esi
407d6a:	33 c3                	xor    %ebx,%eax
407d6c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
407d6f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407d72:	33 c1                	xor    %ecx,%eax
407d74:	03 84 bd bc fe ff ff 	add    -0x144(%ebp,%edi,4),%eax
407d7b:	89 55 f8             	mov    %edx,-0x8(%ebp)
407d7e:	c1 c2 05             	rol    $0x5,%edx
407d81:	03 55 f4             	add    -0xc(%ebp),%edx
407d84:	89 75 f4             	mov    %esi,-0xc(%ebp)
407d87:	c1 c9 02             	ror    $0x2,%ecx
407d8a:	8d 84 10 d6 c1 62 ca 	lea    -0x359d3e2a(%eax,%edx,1),%eax
407d91:	8b 55 f8             	mov    -0x8(%ebp),%edx
407d94:	8b f3                	mov    %ebx,%esi
407d96:	33 f1                	xor    %ecx,%esi
407d98:	33 f2                	xor    %edx,%esi
407d9a:	03 b4 bd c0 fe ff ff 	add    -0x140(%ebp,%edi,4),%esi
407da1:	89 45 f8             	mov    %eax,-0x8(%ebp)
407da4:	c1 c0 05             	rol    $0x5,%eax
407da7:	03 45 f4             	add    -0xc(%ebp),%eax
407daa:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407dad:	8d b4 06 d6 c1 62 ca 	lea    -0x359d3e2a(%esi,%eax,1),%esi
407db4:	8b c1                	mov    %ecx,%eax
407db6:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407db9:	c1 ca 02             	ror    $0x2,%edx
407dbc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407dbf:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407dc2:	89 75 f8             	mov    %esi,-0x8(%ebp)
407dc5:	8b d8                	mov    %eax,%ebx
407dc7:	33 da                	xor    %edx,%ebx
407dc9:	c1 c6 05             	rol    $0x5,%esi
407dcc:	03 75 f4             	add    -0xc(%ebp),%esi
407dcf:	33 d9                	xor    %ecx,%ebx
407dd1:	03 9c bd c4 fe ff ff 	add    -0x13c(%ebp,%edi,4),%ebx
407dd8:	83 c7 05             	add    $0x5,%edi
407ddb:	8d b4 33 d6 c1 62 ca 	lea    -0x359d3e2a(%ebx,%esi,1),%esi
407de2:	89 45 f4             	mov    %eax,-0xc(%ebp)
407de5:	8b 45 f8             	mov    -0x8(%ebp),%eax
407de8:	c1 c9 02             	ror    $0x2,%ecx
407deb:	89 55 fc             	mov    %edx,-0x4(%ebp)
407dee:	89 75 f8             	mov    %esi,-0x8(%ebp)
407df1:	89 7d fc             	mov    %edi,-0x4(%ebp)
407df4:	83 ff 50             	cmp    $0x50,%edi
407df7:	0f 8c 25 ff ff ff    	jl     0x407d22
407dfd:	8b 7d 08             	mov    0x8(%ebp),%edi
407e00:	8b 1f                	mov    (%edi),%ebx
407e02:	03 de                	add    %esi,%ebx
407e04:	8b 77 04             	mov    0x4(%edi),%esi
407e07:	03 f0                	add    %eax,%esi
407e09:	8b 47 08             	mov    0x8(%edi),%eax
407e0c:	03 c1                	add    %ecx,%eax
407e0e:	89 47 08             	mov    %eax,0x8(%edi)
407e11:	8b 47 0c             	mov    0xc(%edi),%eax
407e14:	03 c2                	add    %edx,%eax
407e16:	89 47 0c             	mov    %eax,0xc(%edi)
407e19:	8b 47 10             	mov    0x10(%edi),%eax
407e1c:	03 45 f4             	add    -0xc(%ebp),%eax
407e1f:	89 1f                	mov    %ebx,(%edi)
407e21:	89 77 04             	mov    %esi,0x4(%edi)
407e24:	89 47 10             	mov    %eax,0x10(%edi)
407e27:	c7 47 5c 00 00 00 00 	movl   $0x0,0x5c(%edi)
407e2e:	5f                   	pop    %edi
407e2f:	5e                   	pop    %esi
407e30:	5b                   	pop    %ebx
407e31:	8b e5                	mov    %ebp,%esp
407e33:	5d                   	pop    %ebp
407e34:	c3                   	ret
407e35:	b0 b6                	mov    $0xb6,%al
407e37:	82 f9 ae             	cmp    $0xae,%cl
407e3a:	30 f9                	xor    %bh,%cl
407e3c:	1c e9                	sbb    $0xe9,%al
407e3e:	d3 57 55             	rcll   %cl,0x55(%edi)
407e41:	8b ec                	mov    %esp,%ebp
407e43:	53                   	push   %ebx
407e44:	56                   	push   %esi
407e45:	8b 75 08             	mov    0x8(%ebp),%esi
407e48:	8b 46 5c             	mov    0x5c(%esi),%eax
407e4b:	57                   	push   %edi
407e4c:	c6 44 30 1c 80       	movb   $0x80,0x1c(%eax,%esi,1)
407e51:	bf 01 00 00 00       	mov    $0x1,%edi
407e56:	01 7e 5c             	add    %edi,0x5c(%esi)
407e59:	83 f8 37             	cmp    $0x37,%eax
407e5c:	8b 46 5c             	mov    0x5c(%esi),%eax
407e5f:	7e 41                	jle    0x407ea2
407e61:	b9 40 00 00 00       	mov    $0x40,%ecx
407e66:	32 db                	xor    %bl,%bl
407e68:	3b c1                	cmp    %ecx,%eax
407e6a:	7d 12                	jge    0x407e7e
407e6c:	8d 64 24 00          	lea    0x0(%esp),%esp
407e70:	88 5c 30 1c          	mov    %bl,0x1c(%eax,%esi,1)
407e74:	01 7e 5c             	add    %edi,0x5c(%esi)
407e77:	8b 46 5c             	mov    0x5c(%esi),%eax
407e7a:	3b c1                	cmp    %ecx,%eax
407e7c:	7c f2                	jl     0x407e70
407e7e:	56                   	push   %esi
407e7f:	e8 6c fa ff ff       	call   0x4078f0
407e84:	b9 38 00 00 00       	mov    $0x38,%ecx
407e89:	83 c4 04             	add    $0x4,%esp
407e8c:	39 4e 5c             	cmp    %ecx,0x5c(%esi)
407e8f:	7d 2d                	jge    0x407ebe
407e91:	8b 46 5c             	mov    0x5c(%esi),%eax
407e94:	88 5c 06 1c          	mov    %bl,0x1c(%esi,%eax,1)
407e98:	01 7e 5c             	add    %edi,0x5c(%esi)
407e9b:	39 4e 5c             	cmp    %ecx,0x5c(%esi)
407e9e:	7c f1                	jl     0x407e91
407ea0:	eb 1c                	jmp    0x407ebe
407ea2:	b9 38 00 00 00       	mov    $0x38,%ecx
407ea7:	3b c1                	cmp    %ecx,%eax
407ea9:	7d 13                	jge    0x407ebe
407eab:	32 db                	xor    %bl,%bl
407ead:	8d 49 00             	lea    0x0(%ecx),%ecx
407eb0:	88 5c 30 1c          	mov    %bl,0x1c(%eax,%esi,1)
407eb4:	01 7e 5c             	add    %edi,0x5c(%esi)
407eb7:	8b 46 5c             	mov    0x5c(%esi),%eax
407eba:	3b c1                	cmp    %ecx,%eax
407ebc:	7c f2                	jl     0x407eb0
407ebe:	0f b6 4e 1b          	movzbl 0x1b(%esi),%ecx
407ec2:	0f b6 56 1a          	movzbl 0x1a(%esi),%edx
407ec6:	0f b6 46 19          	movzbl 0x19(%esi),%eax
407eca:	88 4e 54             	mov    %cl,0x54(%esi)
407ecd:	0f b6 4e 18          	movzbl 0x18(%esi),%ecx
407ed1:	88 56 55             	mov    %dl,0x55(%esi)
407ed4:	0f b6 56 17          	movzbl 0x17(%esi),%edx
407ed8:	88 46 56             	mov    %al,0x56(%esi)
407edb:	0f b6 46 16          	movzbl 0x16(%esi),%eax
407edf:	88 4e 57             	mov    %cl,0x57(%esi)
407ee2:	0f b6 4e 15          	movzbl 0x15(%esi),%ecx
407ee6:	88 56 58             	mov    %dl,0x58(%esi)
407ee9:	0f b6 56 14          	movzbl 0x14(%esi),%edx
407eed:	56                   	push   %esi
407eee:	88 46 59             	mov    %al,0x59(%esi)
407ef1:	88 4e 5a             	mov    %cl,0x5a(%esi)
407ef4:	88 56 5b             	mov    %dl,0x5b(%esi)
407ef7:	e8 f4 f9 ff ff       	call   0x4078f0
407efc:	83 c4 04             	add    $0x4,%esp
407eff:	5f                   	pop    %edi
407f00:	5e                   	pop    %esi
407f01:	5b                   	pop    %ebx
407f02:	5d                   	pop    %ebp
407f03:	c3                   	ret
407f04:	77 c3                	ja     0x407ec9
407f06:	c9                   	leave
407f07:	26 34 48             	es xor $0x48,%al
407f0a:	40                   	inc    %eax
407f0b:	ef                   	out    %eax,(%dx)
407f0c:	8d 61 cb             	lea    -0x35(%ecx),%esp
407f0f:	0b 55 8b             	or     -0x75(%ebp),%edx
407f12:	ec                   	in     (%dx),%al
407f13:	56                   	push   %esi
407f14:	57                   	push   %edi
407f15:	6a 00                	push   $0x0
407f17:	e8 54 0a 01 00       	call   0x418970
407f1c:	8b 7d 0c             	mov    0xc(%ebp),%edi
407f1f:	8b 75 08             	mov    0x8(%ebp),%esi
407f22:	0f b6 c8             	movzbl %al,%ecx
407f25:	83 c4 04             	add    $0x4,%esp
407f28:	3b ce                	cmp    %esi,%ecx
407f2a:	72 04                	jb     0x407f30
407f2c:	3b cf                	cmp    %edi,%ecx
407f2e:	76 08                	jbe    0x407f38
407f30:	51                   	push   %ecx
407f31:	e8 3a 0a 01 00       	call   0x418970
407f36:	eb ea                	jmp    0x407f22
407f38:	5f                   	pop    %edi
407f39:	5e                   	pop    %esi
407f3a:	5d                   	pop    %ebp
407f3b:	c3                   	ret
407f3c:	47                   	inc    %edi
407f3d:	4b                   	dec    %ebx
407f3e:	04 b6                	add    $0xb6,%al
407f40:	55                   	push   %ebp
407f41:	8b ec                	mov    %esp,%ebp
407f43:	56                   	push   %esi
407f44:	57                   	push   %edi
407f45:	e8 76 0a 01 00       	call   0x4189c0
407f4a:	8b 75 0c             	mov    0xc(%ebp),%esi
407f4d:	8b 7d 08             	mov    0x8(%ebp),%edi
407f50:	c1 e8 0c             	shr    $0xc,%eax
407f53:	3b c7                	cmp    %edi,%eax
407f55:	72 04                	jb     0x407f5b
407f57:	3b c6                	cmp    %esi,%eax
407f59:	76 07                	jbe    0x407f62
407f5b:	e8 60 0a 01 00       	call   0x4189c0
407f60:	eb ee                	jmp    0x407f50
407f62:	5f                   	pop    %edi
407f63:	5e                   	pop    %esi
407f64:	5d                   	pop    %ebp
407f65:	c3                   	ret
407f66:	7c 48                	jl     0x407fb0
407f68:	77 65                	ja     0x407fcf
407f6a:	9e                   	sahf
407f6b:	95                   	xchg   %eax,%ebp
407f6c:	bb 5a b9 9b 55       	mov    $0x559bb95a,%ebx
407f71:	8b ec                	mov    %esp,%ebp
407f73:	83 ec 40             	sub    $0x40,%esp
407f76:	8b 55 10             	mov    0x10(%ebp),%edx
407f79:	8b 45 08             	mov    0x8(%ebp),%eax
407f7c:	53                   	push   %ebx
407f7d:	56                   	push   %esi
407f7e:	8b 75 0c             	mov    0xc(%ebp),%esi
407f81:	57                   	push   %edi
407f82:	8d 7a fe             	lea    -0x2(%edx),%edi
407f85:	33 c9                	xor    %ecx,%ecx
407f87:	c7 45 c0 41 42 43 44 	movl   $0x44434241,-0x40(%ebp)
407f8e:	c7 45 c4 45 46 47 48 	movl   $0x48474645,-0x3c(%ebp)
407f95:	c7 45 c8 49 4a 4b 4c 	movl   $0x4c4b4a49,-0x38(%ebp)
407f9c:	c7 45 cc 4d 4e 4f 50 	movl   $0x504f4e4d,-0x34(%ebp)
407fa3:	c7 45 d0 51 52 53 54 	movl   $0x54535251,-0x30(%ebp)
407faa:	c7 45 d4 55 56 57 58 	movl   $0x58575655,-0x2c(%ebp)
407fb1:	c7 45 d8 59 5a 61 62 	movl   $0x62615a59,-0x28(%ebp)
407fb8:	c7 45 dc 63 64 65 66 	movl   $0x66656463,-0x24(%ebp)
407fbf:	c7 45 e0 67 68 69 6a 	movl   $0x6a696867,-0x20(%ebp)
407fc6:	c7 45 e4 6b 6c 6d 6e 	movl   $0x6e6d6c6b,-0x1c(%ebp)
407fcd:	c7 45 e8 6f 70 71 72 	movl   $0x7271706f,-0x18(%ebp)
407fd4:	c7 45 ec 73 74 75 76 	movl   $0x76757473,-0x14(%ebp)
407fdb:	c7 45 f0 77 78 79 7a 	movl   $0x7a797877,-0x10(%ebp)
407fe2:	c7 45 f4 30 31 32 33 	movl   $0x33323130,-0xc(%ebp)
407fe9:	c7 45 f8 34 35 36 37 	movl   $0x37363534,-0x8(%ebp)
407ff0:	c7 45 fc 38 39 2b 2f 	movl   $0x2f2b3938,-0x4(%ebp)
407ff7:	85 ff                	test   %edi,%edi
407ff9:	7e 6a                	jle    0x408065
407ffb:	eb 03                	jmp    0x408000
407ffd:	8d 49 00             	lea    0x0(%ecx),%ecx
408000:	0f b6 14 0e          	movzbl (%esi,%ecx,1),%edx
408004:	c1 ea 02             	shr    $0x2,%edx
408007:	0f b6 54 15 c0       	movzbl -0x40(%ebp,%edx,1),%edx
40800c:	88 10                	mov    %dl,(%eax)
40800e:	0f be 14 0e          	movsbl (%esi,%ecx,1),%edx
408012:	0f b6 5c 0e 01       	movzbl 0x1(%esi,%ecx,1),%ebx
408017:	83 e2 03             	and    $0x3,%edx
40801a:	c1 e2 04             	shl    $0x4,%edx
40801d:	c1 eb 04             	shr    $0x4,%ebx
408020:	0b d3                	or     %ebx,%edx
408022:	0f b6 54 15 c0       	movzbl -0x40(%ebp,%edx,1),%edx
408027:	88 50 01             	mov    %dl,0x1(%eax)
40802a:	0f be 5c 0e 01       	movsbl 0x1(%esi,%ecx,1),%ebx
40802f:	0f b6 54 0e 02       	movzbl 0x2(%esi,%ecx,1),%edx
408034:	83 e3 0f             	and    $0xf,%ebx
408037:	c1 ea 06             	shr    $0x6,%edx
40803a:	03 db                	add    %ebx,%ebx
40803c:	03 db                	add    %ebx,%ebx
40803e:	0b d3                	or     %ebx,%edx
408040:	0f b6 54 15 c0       	movzbl -0x40(%ebp,%edx,1),%edx
408045:	88 50 02             	mov    %dl,0x2(%eax)
408048:	0f be 54 0e 02       	movsbl 0x2(%esi,%ecx,1),%edx
40804d:	83 e2 3f             	and    $0x3f,%edx
408050:	0f b6 54 15 c0       	movzbl -0x40(%ebp,%edx,1),%edx
408055:	88 50 03             	mov    %dl,0x3(%eax)
408058:	83 c1 03             	add    $0x3,%ecx
40805b:	83 c0 04             	add    $0x4,%eax
40805e:	3b cf                	cmp    %edi,%ecx
408060:	7c 9e                	jl     0x408000
408062:	8b 55 10             	mov    0x10(%ebp),%edx
408065:	3b ca                	cmp    %edx,%ecx
408067:	7d 5b                	jge    0x4080c4
408069:	0f b6 3c 31          	movzbl (%ecx,%esi,1),%edi
40806d:	c1 ef 02             	shr    $0x2,%edi
408070:	8a 5c 3d c0          	mov    -0x40(%ebp,%edi,1),%bl
408074:	4a                   	dec    %edx
408075:	88 18                	mov    %bl,(%eax)
408077:	3b ca                	cmp    %edx,%ecx
408079:	75 16                	jne    0x408091
40807b:	0f be 0c 31          	movsbl (%ecx,%esi,1),%ecx
40807f:	83 e1 03             	and    $0x3,%ecx
408082:	03 c9                	add    %ecx,%ecx
408084:	8a 54 cd c0          	mov    -0x40(%ebp,%ecx,8),%dl
408088:	88 50 01             	mov    %dl,0x1(%eax)
40808b:	c6 40 02 3d          	movb   $0x3d,0x2(%eax)
40808f:	eb 2c                	jmp    0x4080bd
408091:	0f be 14 31          	movsbl (%ecx,%esi,1),%edx
408095:	0f b6 7c 31 01       	movzbl 0x1(%ecx,%esi,1),%edi
40809a:	83 e2 03             	and    $0x3,%edx
40809d:	c1 e2 04             	shl    $0x4,%edx
4080a0:	c1 ef 04             	shr    $0x4,%edi
4080a3:	0b d7                	or     %edi,%edx
4080a5:	0f b6 54 15 c0       	movzbl -0x40(%ebp,%edx,1),%edx
4080aa:	88 50 01             	mov    %dl,0x1(%eax)
4080ad:	0f be 4c 31 01       	movsbl 0x1(%ecx,%esi,1),%ecx
4080b2:	83 e1 0f             	and    $0xf,%ecx
4080b5:	0f b6 54 8d c0       	movzbl -0x40(%ebp,%ecx,4),%edx
4080ba:	88 50 02             	mov    %dl,0x2(%eax)
4080bd:	83 c0 03             	add    $0x3,%eax
4080c0:	c6 00 3d             	movb   $0x3d,(%eax)
4080c3:	40                   	inc    %eax
4080c4:	c6 00 00             	movb   $0x0,(%eax)
4080c7:	2b 45 08             	sub    0x8(%ebp),%eax
4080ca:	5f                   	pop    %edi
4080cb:	5e                   	pop    %esi
4080cc:	40                   	inc    %eax
4080cd:	5b                   	pop    %ebx
4080ce:	8b e5                	mov    %ebp,%esp
4080d0:	5d                   	pop    %ebp
4080d1:	c3                   	ret
4080d2:	e2 75                	loop   0x408149
4080d4:	f8                   	clc
4080d5:	69 14 4d 6b 62 76 7f 	imul   $0x46503307,0x7f76626b(,%ecx,2),%edx
4080dc:	07 33 50 46
4080e0:	55                   	push   %ebp
4080e1:	8b ec                	mov    %esp,%ebp
4080e3:	56                   	push   %esi