521c30:	83 7d a4 00          	cmpl   $0x0,-0x5c(%ebp)
521c34:	75 7b                	jne    0x521cb1
521c36:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
521c3a:	75 75                	jne    0x521cb1
521c3c:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
521c40:	75 6f                	jne    0x521cb1
521c42:	ff 36                	push   (%esi)
521c44:	6a 01                	push   $0x1
521c46:	ff 76 1c             	push   0x1c(%esi)
521c49:	ff 75 cc             	push   -0x34(%ebp)
521c4c:	57                   	push   %edi
521c4d:	e8 7e c2 01 00       	call   0x53ded0
521c52:	83 c4 14             	add    $0x14,%esp
521c55:	f6 46 24 80          	testb  $0x80,0x24(%esi)
521c59:	75 24                	jne    0x521c7f
521c5b:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
521c5e:	83 c8 ff             	or     $0xffffffff,%eax
521c61:	6a ff                	push   $0xffffffff
521c63:	ff 36                	push   (%esi)
521c65:	85 c9                	test   %ecx,%ecx
521c67:	0f 45 c1             	cmovne %ecx,%eax
521c6a:	50                   	push   %eax
521c6b:	ff 75 cc             	push   -0x34(%ebp)
521c6e:	ff 76 1c             	push   0x1c(%esi)
521c71:	68 89 00 00 00       	push   $0x89
521c76:	53                   	push   %ebx
521c77:	e8 14 ff 01 00       	call   0x541b90
521c7c:	83 c4 1c             	add    $0x1c,%esp
521c7f:	8b 76 08             	mov    0x8(%esi),%esi
521c82:	85 f6                	test   %esi,%esi
521c84:	0f 84 ca 04 00 00    	je     0x522154
521c8a:	8b 7d cc             	mov    -0x34(%ebp),%edi
521c8d:	0f 1f 00             	nopl   (%eax)
521c90:	57                   	push   %edi
521c91:	ff 76 2c             	push   0x2c(%esi)
521c94:	68 89 00 00 00       	push   $0x89
521c99:	53                   	push   %ebx
521c9a:	e8 41 fe 01 00       	call   0x541ae0
521c9f:	8b 76 14             	mov    0x14(%esi),%esi
521ca2:	83 c4 10             	add    $0x10,%esp
521ca5:	85 f6                	test   %esi,%esi
521ca7:	75 e7                	jne    0x521c90
521ca9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
521cac:	e9 a3 04 00 00       	jmp    0x522154
521cb1:	f6 45 f4 40          	testb  $0x40,-0xc(%ebp)
521cb5:	b8 01 00 00 00       	mov    $0x1,%eax
521cba:	0f 44 45 d8          	cmove  -0x28(%ebp),%eax
521cbe:	f7 d8                	neg    %eax
521cc0:	1b c0                	sbb    %eax,%eax
521cc2:	83 e0 f8             	and    $0xfffffff8,%eax
521cc5:	05 1c 04 00 00       	add    $0x41c,%eax
521cca:	f6 46 24 80          	testb  $0x80,0x24(%esi)
521cce:	0f b7 c0             	movzwl %ax,%eax
521cd1:	89 45 ac             	mov    %eax,-0x54(%ebp)
521cd4:	75 27                	jne    0x521cfd
521cd6:	ff 47 2c             	incl   0x2c(%edi)
521cd9:	8b 47 2c             	mov    0x2c(%edi),%eax
521cdc:	50                   	push   %eax
521cdd:	6a 00                	push   $0x0
521cdf:	6a 48                	push   $0x48
521ce1:	53                   	push   %ebx
521ce2:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
521ce9:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
521cf0:	89 45 80             	mov    %eax,-0x80(%ebp)
521cf3:	e8 e8 fd 01 00       	call   0x541ae0
521cf8:	83 c4 10             	add    $0x10,%esp
521cfb:	eb 46                	jmp    0x521d43
521cfd:	56                   	push   %esi
521cfe:	e8 cd 56 01 00       	call   0x5373d0
521d03:	89 45 d8             	mov    %eax,-0x28(%ebp)
521d06:	0f b7 48 32          	movzwl 0x32(%eax),%ecx
521d0a:	8b 47 2c             	mov    0x2c(%edi),%eax
521d0d:	89 4d cc             	mov    %ecx,-0x34(%ebp)
521d10:	0f bf c9             	movswl %cx,%ecx
521d13:	51                   	push   %ecx
521d14:	8d 50 01             	lea    0x1(%eax),%edx
521d17:	03 c1                	add    %ecx,%eax
521d19:	89 55 a8             	mov    %edx,-0x58(%ebp)
521d1c:	8b 57 28             	mov    0x28(%edi),%edx
521d1f:	52                   	push   %edx
521d20:	89 47 2c             	mov    %eax,0x2c(%edi)
521d23:	6a 64                	push   $0x64
521d25:	8d 42 01             	lea    0x1(%edx),%eax
521d28:	89 55 b0             	mov    %edx,-0x50(%ebp)
521d2b:	53                   	push   %ebx
521d2c:	89 47 28             	mov    %eax,0x28(%edi)
521d2f:	e8 ac fd 01 00       	call   0x541ae0
521d34:	ff 75 d8             	push   -0x28(%ebp)
521d37:	89 45 98             	mov    %eax,-0x68(%ebp)
521d3a:	57                   	push   %edi
521d3b:	e8 10 b3 02 00       	call   0x54d050
521d40:	83 c4 1c             	add    $0x1c,%esp
521d43:	8b 45 d0             	mov    -0x30(%ebp),%eax
521d46:	40                   	inc    %eax
521d47:	50                   	push   %eax
521d48:	ff 75 ac             	push   -0x54(%ebp)
521d4b:	6a 00                	push   $0x0
521d4d:	6a 00                	push   $0x0
521d4f:	ff 75 a4             	push   -0x5c(%ebp)
521d52:	ff 75 88             	push   -0x78(%ebp)
521d55:	57                   	push   %edi
521d56:	e8 25 e2 02 00       	call   0x54ff80
521d5b:	8b c8                	mov    %eax,%ecx
521d5d:	83 c4 1c             	add    $0x1c,%esp
521d60:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
521d63:	85 c9                	test   %ecx,%ecx
521d65:	0f 84 e0 00 00 00    	je     0x521e4b
521d6b:	8b 41 14             	mov    0x14(%ecx),%eax
521d6e:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
521d74:	8b 41 18             	mov    0x18(%ecx),%eax
521d77:	89 45 ac             	mov    %eax,-0x54(%ebp)
521d7a:	0f b6 41 2e          	movzbl 0x2e(%ecx),%eax
521d7e:	89 45 c4             	mov    %eax,-0x3c(%ebp)
521d81:	83 f8 01             	cmp    $0x1,%eax
521d84:	74 0e                	je     0x521d94
521d86:	8b 47 74             	mov    0x74(%edi),%eax
521d89:	8b cf                	mov    %edi,%ecx
521d8b:	85 c0                	test   %eax,%eax
521d8d:	0f 45 c8             	cmovne %eax,%ecx
521d90:	c6 41 14 01          	movb   $0x1,0x14(%ecx)
521d94:	8b 45 8c             	mov    -0x74(%ebp),%eax
521d97:	85 c0                	test   %eax,%eax
521d99:	74 0e                	je     0x521da9
521d9b:	6a 01                	push   $0x1
521d9d:	50                   	push   %eax
521d9e:	6a 52                	push   $0x52
521da0:	53                   	push   %ebx
521da1:	e8 3a fd 01 00       	call   0x541ae0
521da6:	83 c4 10             	add    $0x10,%esp
521da9:	8b 4d d8             	mov    -0x28(%ebp),%ecx
521dac:	85 c9                	test   %ecx,%ecx
521dae:	74 44                	je     0x521df4
521db0:	8b 45 cc             	mov    -0x34(%ebp),%eax
521db3:	98                   	cwtl
521db4:	85 c0                	test   %eax,%eax
521db6:	7e 34                	jle    0x521dec
521db8:	33 ff                	xor    %edi,%edi
521dba:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
521dc0:	8b 45 a8             	mov    -0x58(%ebp),%eax
521dc3:	03 c7                	add    %edi,%eax
521dc5:	50                   	push   %eax
521dc6:	8b 41 04             	mov    0x4(%ecx),%eax
521dc9:	0f bf 04 78          	movswl (%eax,%edi,2),%eax
521dcd:	50                   	push   %eax
521dce:	ff 75 d0             	push   -0x30(%ebp)
521dd1:	56                   	push   %esi
521dd2:	53                   	push   %ebx
521dd3:	e8 e8 22 00 00       	call   0x5240c0
521dd8:	8b 4d cc             	mov    -0x34(%ebp),%ecx
521ddb:	47                   	inc    %edi
521ddc:	0f bf c1             	movswl %cx,%eax
521ddf:	83 c4 14             	add    $0x14,%esp
521de2:	8b 4d d8             	mov    -0x28(%ebp),%ecx
521de5:	3b f8                	cmp    %eax,%edi
521de7:	7c d7                	jl     0x521dc0
521de9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
521dec:	8b 45 a8             	mov    -0x58(%ebp),%eax
521def:	89 45 d4             	mov    %eax,-0x2c(%ebp)
521df2:	eb 1c                	jmp    0x521e10
521df4:	ff 47 2c             	incl   0x2c(%edi)
521df7:	8b 47 2c             	mov    0x2c(%edi),%eax
521dfa:	50                   	push   %eax
521dfb:	6a ff                	push   $0xffffffff
521dfd:	ff 75 d0             	push   -0x30(%ebp)
521e00:	89 45 d4             	mov    %eax,-0x2c(%ebp)
521e03:	56                   	push   %esi
521e04:	53                   	push   %ebx
521e05:	e8 b6 22 00 00       	call   0x5240c0
521e0a:	8b 45 d4             	mov    -0x2c(%ebp),%eax
521e0d:	83 c4 14             	add    $0x14,%esp
521e10:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
521e14:	0f 84 e0 00 00 00    	je     0x521efa
521e1a:	8b 45 cc             	mov    -0x34(%ebp),%eax
521e1d:	0f b7 c0             	movzwl %ax,%eax
521e20:	89 45 b4             	mov    %eax,-0x4c(%ebp)
521e23:	8b 45 94             	mov    -0x6c(%ebp),%eax
521e26:	83 c0 02             	add    $0x2,%eax
521e29:	99                   	cltd
521e2a:	52                   	push   %edx
521e2b:	50                   	push   %eax
521e2c:	ff 75 c8             	push   -0x38(%ebp)
521e2f:	e8 ac f5 ff ff       	call   0x5213e0
521e34:	8b c8                	mov    %eax,%ecx
521e36:	83 c4 0c             	add    $0xc,%esp
521e39:	89 4d a0             	mov    %ecx,-0x60(%ebp)
521e3c:	85 c9                	test   %ecx,%ecx
521e3e:	75 5d                	jne    0x521e9d
521e40:	ff 75 9c             	push   -0x64(%ebp)
521e43:	e8 c8 0f 03 00       	call   0x552e10
521e48:	83 c4 04             	add    $0x4,%esp
521e4b:	8b 4d b8             	mov    -0x48(%ebp),%ecx
521e4e:	8b 45 bc             	mov    -0x44(%ebp),%eax
521e51:	8b 5d c8             	mov    -0x38(%ebp),%ebx
521e54:	85 c0                	test   %eax,%eax
521e56:	74 06                	je     0x521e5e
521e58:	89 88 f0 00 00 00    	mov    %ecx,0xf0(%eax)
521e5e:	ff 75 88             	push   -0x78(%ebp)
521e61:	53                   	push   %ebx
521e62:	e8 09 af 01 00       	call   0x53cd70
521e67:	8b 45 a4             	mov    -0x5c(%ebp),%eax
521e6a:	83 c4 08             	add    $0x8,%esp
521e6d:	85 c0                	test   %eax,%eax
521e6f:	74 0a                	je     0x521e7b
521e71:	50                   	push   %eax
521e72:	53                   	push   %ebx
521e73:	e8 38 49 00 00       	call   0x5267b0
521e78:	83 c4 08             	add    $0x8,%esp
521e7b:	8b 45 a0             	mov    -0x60(%ebp),%eax
521e7e:	85 c0                	test   %eax,%eax
521e80:	74 0a                	je     0x521e8c
521e82:	50                   	push   %eax
521e83:	53                   	push   %ebx
521e84:	e8 e7 f4 ff ff       	call   0x521370
521e89:	83 c4 08             	add    $0x8,%esp
521e8c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
521e8f:	5f                   	pop    %edi
521e90:	5e                   	pop    %esi
521e91:	33 cd                	xor    %ebp,%ecx
521e93:	5b                   	pop    %ebx
521e94:	e8 41 f6 0b 00       	call   0x5e14da
521e99:	8b e5                	mov    %ebp,%esp
521e9b:	5d                   	pop    %ebp
521e9c:	c3                   	ret
521e9d:	8b 45 94             	mov    -0x6c(%ebp),%eax
521ea0:	40                   	inc    %eax
521ea1:	50                   	push   %eax
521ea2:	6a 01                	push   $0x1
521ea4:	51                   	push   %ecx
521ea5:	e8 56 1b 0c 00       	call   0x5e3a00
521eaa:	8b 45 94             	mov    -0x6c(%ebp),%eax
521ead:	83 c4 0c             	add    $0xc,%esp
521eb0:	8b 55 a0             	mov    -0x60(%ebp),%edx
521eb3:	8b 4d d0             	mov    -0x30(%ebp),%ecx
521eb6:	c6 44 10 01 00       	movb   $0x0,0x1(%eax,%edx,1)
521ebb:	8b 85 70 ff ff ff    	mov    -0x90(%ebp),%eax
521ec1:	85 c0                	test   %eax,%eax
521ec3:	78 06                	js     0x521ecb
521ec5:	2b c1                	sub    %ecx,%eax
521ec7:	c6 04 10 00          	movb   $0x0,(%eax,%edx,1)
521ecb:	8b 45 ac             	mov    -0x54(%ebp),%eax
521ece:	85 c0                	test   %eax,%eax
521ed0:	78 06                	js     0x521ed8
521ed2:	2b c1                	sub    %ecx,%eax
521ed4:	c6 04 10 00          	movb   $0x0,(%eax,%edx,1)
521ed8:	8b 45 98             	mov    -0x68(%ebp),%eax
521edb:	85 c0                	test   %eax,%eax
521edd:	74 0a                	je     0x521ee9
521edf:	50                   	push   %eax
521ee0:	53                   	push   %ebx
521ee1:	e8 6a 01 02 00       	call   0x542050
521ee6:	83 c4 08             	add    $0x8,%esp
521ee9:	ff 4f 38             	decl   0x38(%edi)
521eec:	8b 47 38             	mov    0x38(%edi),%eax
521eef:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
521ef5:	e9 7d 00 00 00       	jmp    0x521f77
521efa:	8b 4d d8             	mov    -0x28(%ebp),%ecx
521efd:	85 c9                	test   %ecx,%ecx
521eff:	74 52                	je     0x521f53
521f01:	ff 47 2c             	incl   0x2c(%edi)
521f04:	8b 47 2c             	mov    0x2c(%edi),%eax
521f07:	89 45 d4             	mov    %eax,-0x2c(%ebp)
521f0a:	8b 45 cc             	mov    -0x34(%ebp),%eax
521f0d:	0f bf f0             	movswl %ax,%esi
521f10:	56                   	push   %esi
521f11:	51                   	push   %ecx
521f12:	ff 37                	push   (%edi)
521f14:	c7 45 b4 00 00 00 00 	movl   $0x0,-0x4c(%ebp)
521f1b:	e8 b0 c0 00 00       	call   0x52dfd0
521f20:	83 c4 08             	add    $0x8,%esp
521f23:	50                   	push   %eax
521f24:	ff 75 d4             	push   -0x2c(%ebp)
521f27:	56                   	push   %esi
521f28:	ff 75 a8             	push   -0x58(%ebp)
521f2b:	6a 5b                	push   $0x5b
521f2d:	53                   	push   %ebx
521f2e:	e8 5d fc 01 00       	call   0x541b90
521f33:	56                   	push   %esi
521f34:	ff 75 a8             	push   -0x58(%ebp)
521f37:	ff 75 d4             	push   -0x2c(%ebp)
521f3a:	ff 75 b0             	push   -0x50(%ebp)
521f3d:	68 83 00 00 00       	push   $0x83
521f42:	53                   	push   %ebx
521f43:	e8 c8 fc 01 00       	call   0x541c10
521f48:	8b b5 74 ff ff ff    	mov    -0x8c(%ebp),%esi
521f4e:	83 c4 34             	add    $0x34,%esp
521f51:	eb 19                	jmp    0x521f6c
521f53:	50                   	push   %eax
521f54:	ff 75 80             	push   -0x80(%ebp)
521f57:	c7 45 b4 01 00 00 00 	movl   $0x1,-0x4c(%ebp)
521f5e:	68 93 00 00 00       	push   $0x93
521f63:	53                   	push   %ebx
521f64:	e8 77 fb 01 00       	call   0x541ae0
521f69:	83 c4 10             	add    $0x10,%esp
521f6c:	ff 75 9c             	push   -0x64(%ebp)
521f6f:	e8 9c 0e 03 00       	call   0x552e10
521f74:	83 c4 04             	add    $0x4,%esp
521f77:	83 7d 84 00          	cmpl   $0x0,-0x7c(%ebp)
521f7b:	75 50                	jne    0x521fcd
521f7d:	83 7d c4 02          	cmpl   $0x2,-0x3c(%ebp)
521f81:	c7 45 98 00 00 00 00 	movl   $0x0,-0x68(%ebp)
521f88:	75 0e                	jne    0x521f98
521f8a:	6a 11                	push   $0x11
521f8c:	53                   	push   %ebx
521f8d:	e8 8e fa 01 00       	call   0x541a20
521f92:	83 c4 08             	add    $0x8,%esp
521f95:	89 45 98             	mov    %eax,-0x68(%ebp)
521f98:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
521f9e:	50                   	push   %eax
521f9f:	8d 45 c0             	lea    -0x40(%ebp),%eax
521fa2:	50                   	push   %eax
521fa3:	ff 75 a0             	push   -0x60(%ebp)
521fa6:	ff 75 d0             	push   -0x30(%ebp)
521fa9:	6a 08                	push   $0x8
521fab:	6a 61                	push   $0x61
521fad:	56                   	push   %esi
521fae:	57                   	push   %edi
521faf:	e8 cc fa 00 00       	call   0x531a80
521fb4:	8b 45 c4             	mov    -0x3c(%ebp),%eax
521fb7:	83 c4 20             	add    $0x20,%esp
521fba:	83 f8 02             	cmp    $0x2,%eax
521fbd:	75 11                	jne    0x521fd0
521fbf:	ff 75 98             	push   -0x68(%ebp)
521fc2:	53                   	push   %ebx
521fc3:	e8 98 87 02 00       	call   0x54a760
521fc8:	83 c4 08             	add    $0x8,%esp
521fcb:	eb 07                	jmp    0x521fd4
521fcd:	8b 45 c4             	mov    -0x3c(%ebp),%eax
521fd0:	85 c0                	test   %eax,%eax
521fd2:	74 35                	je     0x522009
521fd4:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
521fd8:	8b 4d c0             	mov    -0x40(%ebp),%ecx
521fdb:	0f 85 86 00 00 00    	jne    0x522067
521fe1:	8b 45 a0             	mov    -0x60(%ebp),%eax
521fe4:	2b 45 d0             	sub    -0x30(%ebp),%eax
521fe7:	80 3c 08 00          	cmpb   $0x0,(%eax,%ecx,1)
521feb:	74 74                	je     0x522061
521fed:	8b 45 b4             	mov    -0x4c(%ebp),%eax
521ff0:	98                   	cwtl
521ff1:	50                   	push   %eax
521ff2:	ff 75 d4             	push   -0x2c(%ebp)
521ff5:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
521ffb:	51                   	push   %ecx
521ffc:	6a 1d                	push   $0x1d
521ffe:	53                   	push   %ebx
521fff:	e8 0c fc 01 00       	call   0x541c10
522004:	83 c4 18             	add    $0x18,%esp
522007:	eb 55                	jmp    0x52205e
522009:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
52200d:	74 39                	je     0x522048
52200f:	ff 75 b0             	push   -0x50(%ebp)