537df2:	2b d0                	sub    %eax,%edx
537df4:	8d 0c 30             	lea    (%eax,%esi,1),%ecx
537df7:	33 c0                	xor    %eax,%eax
537df9:	3b d6                	cmp    %esi,%edx
537dfb:	5e                   	pop    %esi
537dfc:	0f 43 c1             	cmovae %ecx,%eax
537dff:	3b 44 24 04          	cmp    0x4(%esp),%eax
537e03:	0f 42 44 24 04       	cmovb  0x4(%esp),%eax
537e08:	c2 04 00             	ret    $0x4
537e0b:	cc                   	int3
537e0c:	cc                   	int3
537e0d:	cc                   	int3
537e0e:	cc                   	int3
537e0f:	cc                   	int3
537e10:	cc                   	int3
537e11:	cc                   	int3
537e12:	cc                   	int3
537e13:	cc                   	int3
537e14:	cc                   	int3
537e15:	cc                   	int3
537e16:	cc                   	int3
537e17:	cc                   	int3
537e18:	cc                   	int3
537e19:	cc                   	int3
537e1a:	cc                   	int3
537e1b:	cc                   	int3
537e1c:	cc                   	int3
537e1d:	cc                   	int3
537e1e:	cc                   	int3
537e1f:	cc                   	int3
537e20:	8b 54 24 04          	mov    0x4(%esp),%edx
537e24:	53                   	push   %ebx
537e25:	56                   	push   %esi
537e26:	57                   	push   %edi
537e27:	83 7a 14 10          	cmpl   $0x10,0x14(%edx)
537e2b:	8b d9                	mov    %ecx,%ebx
537e2d:	8b 7a 10             	mov    0x10(%edx),%edi
537e30:	72 02                	jb     0x537e34
537e32:	8b 12                	mov    (%edx),%edx
537e34:	33 c9                	xor    %ecx,%ecx
537e36:	be c5 9d 1c 81       	mov    $0x811c9dc5,%esi
537e3b:	85 ff                	test   %edi,%edi
537e3d:	74 12                	je     0x537e51
537e3f:	90                   	nop
537e40:	0f b6 04 0a          	movzbl (%edx,%ecx,1),%eax
537e44:	41                   	inc    %ecx
537e45:	33 c6                	xor    %esi,%eax
537e47:	69 f0 93 01 00 01    	imul   $0x1000193,%eax,%esi
537e4d:	3b cf                	cmp    %edi,%ecx
537e4f:	72 ef                	jb     0x537e40
537e51:	8b 43 18             	mov    0x18(%ebx),%eax
537e54:	5f                   	pop    %edi
537e55:	23 c6                	and    %esi,%eax
537e57:	5e                   	pop    %esi
537e58:	5b                   	pop    %ebx
537e59:	c2 04 00             	ret    $0x4
537e5c:	cc                   	int3
537e5d:	cc                   	int3
537e5e:	cc                   	int3
537e5f:	cc                   	int3
537e60:	cc                   	int3
537e61:	cc                   	int3
537e62:	cc                   	int3
537e63:	cc                   	int3
537e64:	cc                   	int3
537e65:	cc                   	int3
537e66:	cc                   	int3
537e67:	cc                   	int3
537e68:	cc                   	int3
537e69:	cc                   	int3
537e6a:	cc                   	int3
537e6b:	cc                   	int3
537e6c:	cc                   	int3
537e6d:	cc                   	int3
537e6e:	cc                   	int3
537e6f:	cc                   	int3
537e70:	8b 51 04             	mov    0x4(%ecx),%edx
537e73:	b8 c6 71 1c 07       	mov    $0x71c71c6,%eax
537e78:	56                   	push   %esi
537e79:	8b 74 24 08          	mov    0x8(%esp),%esi
537e7d:	2b c2                	sub    %edx,%eax
537e7f:	3b c6                	cmp    %esi,%eax
537e81:	72 0a                	jb     0x537e8d
537e83:	8d 04 32             	lea    (%edx,%esi,1),%eax
537e86:	89 41 04             	mov    %eax,0x4(%ecx)
537e89:	5e                   	pop    %esi
537e8a:	c2 04 00             	ret    $0x4
537e8d:	68 0c 61 bd 00       	push   $0xbd610c
537e92:	e8 7f 19 ef ff       	call   0x429816
537e97:	cc                   	int3
537e98:	cc                   	int3
537e99:	cc                   	int3
537e9a:	cc                   	int3
537e9b:	cc                   	int3
537e9c:	cc                   	int3
537e9d:	cc                   	int3
537e9e:	cc                   	int3
537e9f:	cc                   	int3
537ea0:	cc                   	int3
537ea1:	cc                   	int3
537ea2:	cc                   	int3
537ea3:	cc                   	int3
537ea4:	cc                   	int3
537ea5:	cc                   	int3
537ea6:	cc                   	int3
537ea7:	cc                   	int3
537ea8:	cc                   	int3
537ea9:	cc                   	int3
537eaa:	cc                   	int3
537eab:	cc                   	int3
537eac:	cc                   	int3
537ead:	cc                   	int3
537eae:	cc                   	int3
537eaf:	cc                   	int3
537eb0:	51                   	push   %ecx
537eb1:	53                   	push   %ebx
537eb2:	8b d9                	mov    %ecx,%ebx
537eb4:	55                   	push   %ebp
537eb5:	8b 6c 24 10          	mov    0x10(%esp),%ebp
537eb9:	56                   	push   %esi
537eba:	8b 43 14             	mov    0x14(%ebx),%eax
537ebd:	2b 43 0c             	sub    0xc(%ebx),%eax
537ec0:	57                   	push   %edi
537ec1:	8d 3c 6d 00 00 00 00 	lea    0x0(,%ebp,2),%edi
537ec8:	c1 f8 02             	sar    $0x2,%eax
537ecb:	3b c7                	cmp    %edi,%eax
537ecd:	73 11                	jae    0x537ee0
537ecf:	81 ff ff ff ff 3f    	cmp    $0x3fffffff,%edi
537ed5:	77 3d                	ja     0x537f14
537ed7:	57                   	push   %edi
537ed8:	8d 4b 0c             	lea    0xc(%ebx),%ecx
537edb:	e8 3a ab ef ff       	call   0x432a1a
537ee0:	8b 43 04             	mov    0x4(%ebx),%eax
537ee3:	8d 4b 0c             	lea    0xc(%ebx),%ecx
537ee6:	89 44 24 18          	mov    %eax,0x18(%esp)
537eea:	8b 43 0c             	mov    0xc(%ebx),%eax
537eed:	89 43 10             	mov    %eax,0x10(%ebx)
537ef0:	8d 44 24 18          	lea    0x18(%esp),%eax
537ef4:	50                   	push   %eax
537ef5:	57                   	push   %edi
537ef6:	ff 73 0c             	push   0xc(%ebx)
537ef9:	8d 44 24 1c          	lea    0x1c(%esp),%eax
537efd:	50                   	push   %eax
537efe:	e8 8f da ed ff       	call   0x415992
537f03:	5f                   	pop    %edi
537f04:	5e                   	pop    %esi
537f05:	8d 45 ff             	lea    -0x1(%ebp),%eax
537f08:	89 6b 1c             	mov    %ebp,0x1c(%ebx)
537f0b:	5d                   	pop    %ebp
537f0c:	89 43 18             	mov    %eax,0x18(%ebx)
537f0f:	5b                   	pop    %ebx
537f10:	59                   	pop    %ecx
537f11:	c2 04 00             	ret    $0x4
537f14:	68 58 20 bd 00       	push   $0xbd2058
537f19:	e8 f8 18 ef ff       	call   0x429816
537f1e:	cc                   	int3
537f1f:	cc                   	int3
537f20:	cc                   	int3
537f21:	cc                   	int3
537f22:	cc                   	int3
537f23:	cc                   	int3
537f24:	cc                   	int3
537f25:	cc                   	int3
537f26:	cc                   	int3
537f27:	cc                   	int3
537f28:	cc                   	int3
537f29:	cc                   	int3
537f2a:	cc                   	int3
537f2b:	cc                   	int3
537f2c:	cc                   	int3
537f2d:	cc                   	int3
537f2e:	cc                   	int3
537f2f:	cc                   	int3
537f30:	cc                   	int3
537f31:	cc                   	int3
537f32:	cc                   	int3
537f33:	cc                   	int3
537f34:	cc                   	int3
537f35:	cc                   	int3
537f36:	cc                   	int3
537f37:	cc                   	int3
537f38:	cc                   	int3
537f39:	cc                   	int3
537f3a:	cc                   	int3
537f3b:	cc                   	int3
537f3c:	cc                   	int3
537f3d:	cc                   	int3
537f3e:	cc                   	int3
537f3f:	cc                   	int3
537f40:	8b 44 24 0c          	mov    0xc(%esp),%eax
537f44:	8b 51 0c             	mov    0xc(%ecx),%edx
537f47:	56                   	push   %esi
537f48:	8d 34 c5 00 00 00 00 	lea    0x0(,%eax,8),%esi
537f4f:	8b 04 32             	mov    (%edx,%esi,1),%eax
537f52:	03 d6                	add    %esi,%edx
537f54:	3b 41 04             	cmp    0x4(%ecx),%eax
537f57:	75 15                	jne    0x537f6e
537f59:	8b 44 24 08          	mov    0x8(%esp),%eax
537f5d:	89 02                	mov    %eax,(%edx)
537f5f:	8b 49 0c             	mov    0xc(%ecx),%ecx
537f62:	8b 44 24 08          	mov    0x8(%esp),%eax
537f66:	89 44 0e 04          	mov    %eax,0x4(%esi,%ecx,1)
537f6a:	5e                   	pop    %esi
537f6b:	c2 0c 00             	ret    $0xc
537f6e:	3b 44 24 0c          	cmp    0xc(%esp),%eax
537f72:	75 0a                	jne    0x537f7e
537f74:	8b 44 24 08          	mov    0x8(%esp),%eax
537f78:	89 02                	mov    %eax,(%edx)
537f7a:	5e                   	pop    %esi
537f7b:	c2 0c 00             	ret    $0xc
537f7e:	8b 42 04             	mov    0x4(%edx),%eax
537f81:	8b 00                	mov    (%eax),%eax
537f83:	89 42 04             	mov    %eax,0x4(%edx)
537f86:	3b 44 24 08          	cmp    0x8(%esp),%eax
537f8a:	74 0e                	je     0x537f9a
537f8c:	8b 49 0c             	mov    0xc(%ecx),%ecx
537f8f:	8b 44 31 04          	mov    0x4(%ecx,%esi,1),%eax
537f93:	8b 40 04             	mov    0x4(%eax),%eax
537f96:	89 44 31 04          	mov    %eax,0x4(%ecx,%esi,1)
537f9a:	5e                   	pop    %esi
537f9b:	c2 0c 00             	ret    $0xc
537f9e:	cc                   	int3
537f9f:	cc                   	int3
537fa0:	cc                   	int3
537fa1:	cc                   	int3
537fa2:	cc                   	int3
537fa3:	cc                   	int3
537fa4:	cc                   	int3
537fa5:	cc                   	int3
537fa6:	cc                   	int3
537fa7:	cc                   	int3
537fa8:	cc                   	int3
537fa9:	cc                   	int3
537faa:	cc                   	int3
537fab:	cc                   	int3
537fac:	cc                   	int3
537fad:	cc                   	int3
537fae:	cc                   	int3
537faf:	cc                   	int3
537fb0:	cc                   	int3
537fb1:	cc                   	int3
537fb2:	cc                   	int3
537fb3:	cc                   	int3
537fb4:	cc                   	int3
537fb5:	cc                   	int3
537fb6:	cc                   	int3
537fb7:	cc                   	int3
537fb8:	cc                   	int3
537fb9:	cc                   	int3
537fba:	cc                   	int3
537fbb:	cc                   	int3
537fbc:	cc                   	int3
537fbd:	cc                   	int3
537fbe:	cc                   	int3
537fbf:	cc                   	int3
537fc0:	55                   	push   %ebp
537fc1:	8b ec                	mov    %esp,%ebp
537fc3:	6a ff                	push   $0xffffffff
537fc5:	68 e0 ee b4 00       	push   $0xb4eee0
537fca:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
537fd0:	50                   	push   %eax
537fd1:	83 ec 18             	sub    $0x18,%esp
537fd4:	53                   	push   %ebx
537fd5:	56                   	push   %esi
537fd6:	57                   	push   %edi
537fd7:	a1 24 f6 d5 00       	mov    0xd5f624,%eax
537fdc:	33 c5                	xor    %ebp,%eax
537fde:	50                   	push   %eax
537fdf:	8d 45 f4             	lea    -0xc(%ebp),%eax
537fe2:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
537fe8:	89 65 f0             	mov    %esp,-0x10(%ebp)
537feb:	8b f9                	mov    %ecx,%edi
537fed:	89 7d e0             	mov    %edi,-0x20(%ebp)
537ff0:	8b 45 0c             	mov    0xc(%ebp),%eax
537ff3:	8b f0                	mov    %eax,%esi
537ff5:	8b 17                	mov    (%edi),%edx
537ff7:	2b f2                	sub    %edx,%esi
537ff9:	c1 fe 02             	sar    $0x2,%esi
537ffc:	89 75 dc             	mov    %esi,-0x24(%ebp)
537fff:	8b 75 10             	mov    0x10(%ebp),%esi
538002:	85 f6                	test   %esi,%esi
538004:	0f 84 e8 01 00 00    	je     0x5381f2
53800a:	8b 4f 08             	mov    0x8(%edi),%ecx
53800d:	8b 5f 04             	mov    0x4(%edi),%ebx
538010:	2b cb                	sub    %ebx,%ecx
538012:	c1 f9 02             	sar    $0x2,%ecx
538015:	3b ce                	cmp    %esi,%ecx
538017:	0f 83 f6 00 00 00    	jae    0x538113
53801d:	2b da                	sub    %edx,%ebx
53801f:	b9 ff ff ff 3f       	mov    $0x3fffffff,%ecx
538024:	c1 fb 02             	sar    $0x2,%ebx
538027:	8b c1                	mov    %ecx,%eax
538029:	2b c3                	sub    %ebx,%eax
53802b:	3b c6                	cmp    %esi,%eax
53802d:	73 0a                	jae    0x538039
53802f:	68 58 20 bd 00       	push   $0xbd2058
538034:	e8 dd 17 ef ff       	call   0x429816
538039:	8d 04 33             	lea    (%ebx,%esi,1),%eax
53803c:	8b 5f 08             	mov    0x8(%edi),%ebx
53803f:	89 45 10             	mov    %eax,0x10(%ebp)
538042:	2b da                	sub    %edx,%ebx
538044:	c1 fb 02             	sar    $0x2,%ebx
538047:	8b c3                	mov    %ebx,%eax
538049:	d1 e8                	shr    $1,%eax
53804b:	2b c8                	sub    %eax,%ecx
53804d:	03 c3                	add    %ebx,%eax
53804f:	89 4d ec             	mov    %ecx,-0x14(%ebp)
538052:	33 c9                	xor    %ecx,%ecx
538054:	39 5d ec             	cmp    %ebx,-0x14(%ebp)
538057:	0f 43 c8             	cmovae %eax,%ecx
53805a:	8b 45 10             	mov    0x10(%ebp),%eax
53805d:	3b c8                	cmp    %eax,%ecx
53805f:	0f 43 c1             	cmovae %ecx,%eax
538062:	8b cf                	mov    %edi,%ecx
538064:	50                   	push   %eax
538065:	89 45 10             	mov    %eax,0x10(%ebp)
538068:	89 45 e8             	mov    %eax,-0x18(%ebp)
53806b:	e8 3c aa ee ff       	call   0x422aac
538070:	ff 75 0c             	push   0xc(%ebp)
538073:	8b d8                	mov    %eax,%ebx
538075:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
53807c:	8b 45 0c             	mov    0xc(%ebp),%eax
53807f:	2b 07                	sub    (%edi),%eax
538081:	c1 f8 02             	sar    $0x2,%eax
538084:	57                   	push   %edi
538085:	ff 75 14             	push   0x14(%ebp)
538088:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
53808b:	8d 0c 83             	lea    (%ebx,%eax,4),%ecx
53808e:	89 45 ec             	mov    %eax,-0x14(%ebp)
538091:	56                   	push   %esi
538092:	51                   	push   %ecx
538093:	e8 ca 45 ed ff       	call   0x40c662
538098:	8b 0f                	mov    (%edi),%ecx
53809a:	83 c4 14             	add    $0x14,%esp
53809d:	8b 45 0c             	mov    0xc(%ebp),%eax
5380a0:	2b c1                	sub    %ecx,%eax
5380a2:	50                   	push   %eax
5380a3:	51                   	push   %ecx
5380a4:	53                   	push   %ebx
5380a5:	e8 d8 6a ee ff       	call   0x41eb82
5380aa:	8b 45 0c             	mov    0xc(%ebp),%eax
5380ad:	8b 4f 04             	mov    0x4(%edi),%ecx
5380b0:	2b c8                	sub    %eax,%ecx
5380b2:	51                   	push   %ecx
5380b3:	50                   	push   %eax
5380b4:	8b 45 ec             	mov    -0x14(%ebp),%eax
5380b7:	03 c6                	add    %esi,%eax
5380b9:	8d 04 83             	lea    (%ebx,%eax,4),%eax
5380bc:	50                   	push   %eax
5380bd:	e8 c0 6a ee ff       	call   0x41eb82