58ef2f:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
58ef33:	03 c9                	add    %ecx,%ecx
58ef35:	03 4c 24 08          	add    0x8(%esp),%ecx
58ef39:	8b 54 24 10          	mov    0x10(%esp),%edx
58ef3d:	03 d2                	add    %edx,%edx
58ef3f:	03 54 24 04          	add    0x4(%esp),%edx
58ef43:	8b c7                	mov    %edi,%eax
58ef45:	e8 92 9a ff ff       	call   0x5889dc
58ef4a:	3b e8                	cmp    %eax,%ebp
58ef4c:	75 1a                	jne    0x58ef68
58ef4e:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
58ef54:	f7 6c 24 10          	imull  0x10(%esp)
58ef58:	03 44 24 0c          	add    0xc(%esp),%eax
58ef5c:	c1 e0 03             	shl    $0x3,%eax
58ef5f:	03 e8                	add    %eax,%ebp
58ef61:	89 2b                	mov    %ebp,(%ebx)
58ef63:	83 c3 04             	add    $0x4,%ebx
58ef66:	eb 07                	jmp    0x58ef6f
58ef68:	33 c0                	xor    %eax,%eax
58ef6a:	89 03                	mov    %eax,(%ebx)
58ef6c:	83 c3 04             	add    $0x4,%ebx
58ef6f:	4e                   	dec    %esi
58ef70:	0f 85 51 ff ff ff    	jne    0x58eec7
58ef76:	ff 44 24 08          	incl   0x8(%esp)
58ef7a:	81 44 24 44 00 05 00 	addl   $0x500,0x44(%esp)
58ef81:	00
58ef82:	83 7c 24 08 02       	cmpl   $0x2,0x8(%esp)
58ef87:	0f 85 9d fd ff ff    	jne    0x58ed2a
58ef8d:	ff 44 24 04          	incl   0x4(%esp)
58ef91:	81 44 24 40 00 0a 00 	addl   $0xa00,0x40(%esp)
58ef98:	00
58ef99:	83 7c 24 04 08       	cmpl   $0x8,0x4(%esp)
58ef9e:	0f 85 78 fd ff ff    	jne    0x58ed1c
58efa4:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
58efaa:	8d 04 40             	lea    (%eax,%eax,2),%eax
58efad:	03 c0                	add    %eax,%eax
58efaf:	c1 e0 02             	shl    $0x2,%eax
58efb2:	e8 fd a0 e7 ff       	call   0x4090b4
58efb7:	89 44 24 60          	mov    %eax,0x60(%esp)
58efbb:	ba 94 f3 58 00       	mov    $0x58f394,%edx
58efc0:	8b 44 24 60          	mov    0x60(%esp),%eax
58efc4:	e8 fb 9a ff ff       	call   0x588ac4
58efc9:	33 c0                	xor    %eax,%eax
58efcb:	89 44 24 04          	mov    %eax,0x4(%esp)
58efcf:	8d 44 24 50          	lea    0x50(%esp),%eax
58efd3:	89 44 24 40          	mov    %eax,0x40(%esp)
58efd7:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
58efdd:	f7 6c 24 04          	imull  0x4(%esp)
58efe1:	03 c0                	add    %eax,%eax
58efe3:	c1 e0 02             	shl    $0x2,%eax
58efe6:	03 44 24 60          	add    0x60(%esp),%eax
58efea:	8b 54 24 40          	mov    0x40(%esp),%edx
58efee:	89 02                	mov    %eax,(%edx)
58eff0:	ff 44 24 04          	incl   0x4(%esp)
58eff4:	83 44 24 40 04       	addl   $0x4,0x40(%esp)
58eff9:	83 7c 24 04 03       	cmpl   $0x3,0x4(%esp)
58effe:	75 d7                	jne    0x58efd7
58f000:	c7 44 24 04 02 00 00 	movl   $0x2,0x4(%esp)
58f007:	00
58f008:	e9 04 03 00 00       	jmp    0x58f311
58f00d:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
58f013:	83 e8 02             	sub    $0x2,%eax
58f016:	48                   	dec    %eax
58f017:	83 e8 02             	sub    $0x2,%eax
58f01a:	0f 8c 92 02 00 00    	jl     0x58f2b2
58f020:	40                   	inc    %eax
58f021:	89 44 24 38          	mov    %eax,0x38(%esp)
58f025:	c7 44 24 08 02 00 00 	movl   $0x2,0x8(%esp)
58f02c:	00
58f02d:	8b 87 fc 00 00 00    	mov    0xfc(%edi),%eax
58f033:	f7 6c 24 04          	imull  0x4(%esp)
58f037:	03 44 24 08          	add    0x8(%esp),%eax
58f03b:	8b 17                	mov    (%edi),%edx
58f03d:	8d 04 c2             	lea    (%edx,%eax,8),%eax
58f040:	89 04 24             	mov    %eax,(%esp)
58f043:	8b 44 24 08          	mov    0x8(%esp),%eax
58f047:	83 e0 01             	and    $0x1,%eax
58f04a:	c1 e0 05             	shl    $0x5,%eax
58f04d:	8d 04 80             	lea    (%eax,%eax,4),%eax
58f050:	8b 54 24 04          	mov    0x4(%esp),%edx
58f054:	83 e2 07             	and    $0x7,%edx
58f057:	c1 e2 06             	shl    $0x6,%edx
58f05a:	8d 14 92             	lea    (%edx,%edx,4),%edx
58f05d:	8d 54 d4 64          	lea    0x64(%esp,%edx,8),%edx
58f061:	8d 1c c2             	lea    (%edx,%eax,8),%ebx
58f064:	8d 84 24 64 50 00 00 	lea    0x5064(%esp),%eax
58f06b:	b9 20 00 00 00       	mov    $0x20,%ecx
58f070:	33 d2                	xor    %edx,%edx
58f072:	e8 3d a1 ff ff       	call   0x5891b4
58f077:	8b 33                	mov    (%ebx),%esi
58f079:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
58f07f:	74 61                	je     0x58f0e2
58f081:	8b d3                	mov    %ebx,%edx
58f083:	8b 42 04             	mov    0x4(%edx),%eax
58f086:	8b 0c 24             	mov    (%esp),%ecx
58f089:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
58f08d:	50                   	push   %eax
58f08e:	8b 44 24 04          	mov    0x4(%esp),%eax
58f092:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
58f096:	59                   	pop    %ecx
58f097:	2b c1                	sub    %ecx,%eax
58f099:	8b c8                	mov    %eax,%ecx
58f09b:	c1 e9 1f             	shr    $0x1f,%ecx
58f09e:	89 4c 24 30          	mov    %ecx,0x30(%esp)
58f0a2:	8b 4a 08             	mov    0x8(%edx),%ecx
58f0a5:	33 44 24 30          	xor    0x30(%esp),%eax
58f0a9:	2b 44 24 30          	sub    0x30(%esp),%eax
58f0ad:	d3 e0                	shl    %cl,%eax
58f0af:	8b 52 0c             	mov    0xc(%edx),%edx
58f0b2:	01 84 94 64 50 00 00 	add    %eax,0x5064(%esp,%edx,4)
58f0b9:	83 c3 14             	add    $0x14,%ebx
58f0bc:	8b d3                	mov    %ebx,%edx
58f0be:	83 ea 04             	sub    $0x4,%edx
58f0c1:	8b 32                	mov    (%edx),%esi
58f0c3:	83 fe ff             	cmp    $0xffffffff,%esi
58f0c6:	74 af                	je     0x58f077
58f0c8:	01 84 b4 64 50 00 00 	add    %eax,0x5064(%esp,%esi,4)
58f0cf:	8b 33                	mov    (%ebx),%esi
58f0d1:	83 c3 04             	add    $0x4,%ebx
58f0d4:	83 fe ff             	cmp    $0xffffffff,%esi
58f0d7:	74 9e                	je     0x58f077
58f0d9:	01 84 b4 64 50 00 00 	add    %eax,0x5064(%esp,%esi,4)
58f0e0:	eb ed                	jmp    0x58f0cf
58f0e2:	83 c3 04             	add    $0x4,%ebx
58f0e5:	8b 84 24 64 50 00 00 	mov    0x5064(%esp),%eax
58f0ec:	8b d0                	mov    %eax,%edx
58f0ee:	be 07 00 00 00       	mov    $0x7,%esi
58f0f3:	8d 8c 24 68 50 00 00 	lea    0x5068(%esp),%ecx
58f0fa:	89 4c 24 48          	mov    %ecx,0x48(%esp)
58f0fe:	8b 4c 24 48          	mov    0x48(%esp),%ecx
58f102:	8b 29                	mov    (%ecx),%ebp
58f104:	3b d5                	cmp    %ebp,%edx
58f106:	7e 02                	jle    0x58f10a
58f108:	8b d5                	mov    %ebp,%edx
58f10a:	3b e8                	cmp    %eax,%ebp
58f10c:	7e 02                	jle    0x58f110
58f10e:	8b c5                	mov    %ebp,%eax
58f110:	83 44 24 48 04       	addl   $0x4,0x48(%esp)
58f115:	4e                   	dec    %esi
58f116:	75 e6                	jne    0x58f0fe
58f118:	85 c0                	test   %eax,%eax
58f11a:	75 1d                	jne    0x58f139
58f11c:	8b 44 24 58          	mov    0x58(%esp),%eax
58f120:	8b 54 24 08          	mov    0x8(%esp),%edx
58f124:	8d 04 d0             	lea    (%eax,%edx,8),%eax
58f127:	b9 08 00 00 00       	mov    $0x8,%ecx
58f12c:	8b 14 24             	mov    (%esp),%edx
58f12f:	e8 7c c6 ff ff       	call   0x58b7b0
58f134:	e9 6b 01 00 00       	jmp    0x58f2a4
58f139:	d1 e8                	shr    $1,%eax
58f13b:	03 d0                	add    %eax,%edx
58f13d:	89 54 24 2c          	mov    %edx,0x2c(%esp)
58f141:	8d 84 24 84 50 00 00 	lea    0x5084(%esp),%eax
58f148:	b9 10 00 00 00       	mov    $0x10,%ecx
58f14d:	33 d2                	xor    %edx,%edx
58f14f:	e8 60 a0 ff ff       	call   0x5891b4
58f154:	8b c7                	mov    %edi,%eax
58f156:	8b 4c 24 08          	mov    0x8(%esp),%ecx
58f15a:	8b 54 24 04          	mov    0x4(%esp),%edx
58f15e:	e8 79 98 ff ff       	call   0x5889dc
58f163:	8b e8                	mov    %eax,%ebp
58f165:	33 c0                	xor    %eax,%eax
58f167:	89 44 24 30          	mov    %eax,0x30(%esp)
58f16b:	be 08 00 00 00       	mov    $0x8,%esi
58f170:	8d 84 24 64 50 00 00 	lea    0x5064(%esp),%eax
58f177:	89 44 24 48          	mov    %eax,0x48(%esp)
58f17b:	8b 44 24 48          	mov    0x48(%esp),%eax
58f17f:	8b 00                	mov    (%eax),%eax
58f181:	3b 44 24 2c          	cmp    0x2c(%esp),%eax
58f185:	7f 76                	jg     0x58f1fd
58f187:	8b 87 00 01 00 00    	mov    0x100(%edi),%eax
58f18d:	48                   	dec    %eax
58f18e:	85 c0                	test   %eax,%eax
58f190:	7c 67                	jl     0x58f1f9
58f192:	40                   	inc    %eax
58f193:	89 44 24 3c          	mov    %eax,0x3c(%esp)
58f197:	c7 44 24 34 00 00 00 	movl   $0x0,0x34(%esp)
58f19e:	00
58f19f:	8d 84 24 84 50 00 00 	lea    0x5084(%esp),%eax
58f1a6:	89 44 24 4c          	mov    %eax,0x4c(%esp)
58f1aa:	3b 6c 24 34          	cmp    0x34(%esp),%ebp
58f1ae:	75 27                	jne    0x58f1d7
58f1b0:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
58f1b4:	74 21                	je     0x58f1d7
58f1b6:	8b 04 24             	mov    (%esp),%eax
58f1b9:	8b 54 24 34          	mov    0x34(%esp),%edx
58f1bd:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
58f1c1:	8b 53 04             	mov    0x4(%ebx),%edx
58f1c4:	8b 0c 24             	mov    (%esp),%ecx
58f1c7:	0f b7 14 51          	movzwl (%ecx,%edx,2),%edx
58f1cb:	03 c2                	add    %edx,%eax
58f1cd:	d1 e8                	shr    $1,%eax
58f1cf:	8b 54 24 4c          	mov    0x4c(%esp),%edx
58f1d3:	01 02                	add    %eax,(%edx)
58f1d5:	eb 13                	jmp    0x58f1ea
58f1d7:	8b 03                	mov    (%ebx),%eax
58f1d9:	03 44 24 34          	add    0x34(%esp),%eax
58f1dd:	8b 14 24             	mov    (%esp),%edx
58f1e0:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
58f1e4:	8b 54 24 4c          	mov    0x4c(%esp),%edx
58f1e8:	01 02                	add    %eax,(%edx)
58f1ea:	ff 44 24 34          	incl   0x34(%esp)
58f1ee:	83 44 24 4c 04       	addl   $0x4,0x4c(%esp)
58f1f3:	ff 4c 24 3c          	decl   0x3c(%esp)
58f1f7:	75 b1                	jne    0x58f1aa
58f1f9:	ff 44 24 30          	incl   0x30(%esp)
58f1fd:	83 c3 08             	add    $0x8,%ebx
58f200:	83 44 24 48 04       	addl   $0x4,0x48(%esp)
58f205:	4e                   	dec    %esi
58f206:	0f 85 6f ff ff ff    	jne    0x58f17b
58f20c:	8b 87 00 01 00 00    	mov    0x100(%edi),%eax
58f212:	48                   	dec    %eax
58f213:	85 c0                	test   %eax,%eax
58f215:	0f 8c 89 00 00 00    	jl     0x58f2a4
58f21b:	40                   	inc    %eax
58f21c:	89 44 24 3c          	mov    %eax,0x3c(%esp)
58f220:	c7 44 24 34 00 00 00 	movl   $0x0,0x34(%esp)
58f227:	00
58f228:	8d 84 24 84 50 00 00 	lea    0x5084(%esp),%eax
58f22f:	89 44 24 48          	mov    %eax,0x48(%esp)
58f233:	8b 04 24             	mov    (%esp),%eax
58f236:	0f b7 04 68          	movzwl (%eax,%ebp,2),%eax
58f23a:	89 44 24 20          	mov    %eax,0x20(%esp)
58f23e:	3b 6c 24 34          	cmp    0x34(%esp),%ebp
58f242:	74 39                	je     0x58f27d
58f244:	8b 44 24 48          	mov    0x48(%esp),%eax
58f248:	8b 00                	mov    (%eax),%eax
58f24a:	2b 84 ac 84 50 00 00 	sub    0x5084(%esp,%ebp,4),%eax
58f251:	99                   	cltd
58f252:	f7 7c 24 30          	idivl  0x30(%esp)
58f256:	01 44 24 20          	add    %eax,0x20(%esp)
58f25a:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
58f25f:	7d 06                	jge    0x58f267
58f261:	33 c0                	xor    %eax,%eax
58f263:	89 44 24 20          	mov    %eax,0x20(%esp)
58f267:	8b 87 08 01 00 00    	mov    0x108(%edi),%eax
58f26d:	3b 44 24 20          	cmp    0x20(%esp),%eax
58f271:	7d 0a                	jge    0x58f27d
58f273:	8b 87 08 01 00 00    	mov    0x108(%edi),%eax
58f279:	89 44 24 20          	mov    %eax,0x20(%esp)
58f27d:	8b 44 24 58          	mov    0x58(%esp),%eax
58f281:	8b 54 24 08          	mov    0x8(%esp),%edx
58f285:	8d 04 d0             	lea    (%eax,%edx,8),%eax
58f288:	8b 54 24 34          	mov    0x34(%esp),%edx
58f28c:	66 8b 4c 24 20       	mov    0x20(%esp),%cx
58f291:	66 89 0c 50          	mov    %cx,(%eax,%edx,2)
58f295:	ff 44 24 34          	incl   0x34(%esp)
58f299:	83 44 24 48 04       	addl   $0x4,0x48(%esp)
58f29e:	ff 4c 24 3c          	decl   0x3c(%esp)
58f2a2:	75 8f                	jne    0x58f233
58f2a4:	ff 44 24 08          	incl   0x8(%esp)
58f2a8:	ff 4c 24 38          	decl   0x38(%esp)
58f2ac:	0f 85 7b fd ff ff    	jne    0x58f02d
58f2b2:	83 7c 24 04 03       	cmpl   $0x3,0x4(%esp)
58f2b7:	7e 2f                	jle    0x58f2e8
58f2b9:	8b 44 24 04          	mov    0x4(%esp),%eax
58f2bd:	83 e8 02             	sub    $0x2,%eax
58f2c0:	f7 af fc 00 00 00    	imull  0xfc(%edi)
58f2c6:	8b 17                	mov    (%edi),%edx
58f2c8:	8d 44 c2 10          	lea    0x10(%edx,%eax,8),%eax
58f2cc:	8b 97 fc 00 00 00    	mov    0xfc(%edi),%edx
58f2d2:	83 ea 04             	sub    $0x4,%edx
58f2d5:	03 d2                	add    %edx,%edx
58f2d7:	8b ca                	mov    %edx,%ecx
58f2d9:	c1 e1 02             	shl    $0x2,%ecx
58f2dc:	8b 54 24 50          	mov    0x50(%esp),%edx
58f2e0:	83 c2 10             	add    $0x10,%edx
58f2e3:	e8 c8 c4 ff ff       	call   0x58b7b0
58f2e8:	33 f6                	xor    %esi,%esi
58f2ea:	8d 44 24 50          	lea    0x50(%esp),%eax
58f2ee:	89 44 24 40          	mov    %eax,0x40(%esp)
58f2f2:	8b 44 24 40          	mov    0x40(%esp),%eax
58f2f6:	8b 00                	mov    (%eax),%eax
58f2f8:	8b d6                	mov    %esi,%edx
58f2fa:	4a                   	dec    %edx
58f2fb:	83 e2 03             	and    $0x3,%edx
58f2fe:	89 44 94 50          	mov    %eax,0x50(%esp,%edx,4)
58f302:	46                   	inc    %esi
58f303:	83 44 24 40 04       	addl   $0x4,0x40(%esp)
58f308:	83 fe 04             	cmp    $0x4,%esi
58f30b:	75 e5                	jne    0x58f2f2
58f30d:	ff 44 24 04          	incl   0x4(%esp)
58f311:	8b 87 f8 00 00 00    	mov    0xf8(%edi),%eax
58f317:	83 e8 02             	sub    $0x2,%eax
58f31a:	3b 44 24 04          	cmp    0x4(%esp),%eax
58f31e:	0f 8f e9 fc ff ff    	jg     0x58f00d
58f324:	8b 44 24 04          	mov    0x4(%esp),%eax
58f328:	83 e8 02             	sub    $0x2,%eax
58f32b:	f7 af fc 00 00 00    	imull  0xfc(%edi)
58f331:	8b 17                	mov    (%edi),%edx
58f333:	8d 44 c2 10          	lea    0x10(%edx,%eax,8),%eax
58f337:	8b 97 fc 00 00 00    	mov    0xfc(%edi),%edx
58f33d:	83 ea 04             	sub    $0x4,%edx
58f340:	03 d2                	add    %edx,%edx
58f342:	8b ca                	mov    %edx,%ecx
58f344:	c1 e1 02             	shl    $0x2,%ecx
58f347:	8b 54 24 50          	mov    0x50(%esp),%edx
58f34b:	83 c2 10             	add    $0x10,%edx
58f34e:	e8 5d c4 ff ff       	call   0x58b7b0
58f353:	8b 44 24 04          	mov    0x4(%esp),%eax
58f357:	48                   	dec    %eax
58f358:	f7 af fc 00 00 00    	imull  0xfc(%edi)
58f35e:	8b 17                	mov    (%edi),%edx
58f360:	8d 44 c2 10          	lea    0x10(%edx,%eax,8),%eax
58f364:	8b 97 fc 00 00 00    	mov    0xfc(%edi),%edx
58f36a:	83 ea 04             	sub    $0x4,%edx
58f36d:	03 d2                	add    %edx,%edx
58f36f:	8b ca                	mov    %edx,%ecx
58f371:	c1 e1 02             	shl    $0x2,%ecx
58f374:	8b 54 24 54          	mov    0x54(%esp),%edx
58f378:	83 c2 10             	add    $0x10,%edx
58f37b:	e8 30 c4 ff ff       	call   0x58b7b0
58f380:	8b 44 24 60          	mov    0x60(%esp),%eax
58f384:	e8 43 34 e7 ff       	call   0x4027cc
58f389:	81 c4 94 50 00 00    	add    $0x5094,%esp
58f38f:	5d                   	pop    %ebp
58f390:	5f                   	pop    %edi
58f391:	5e                   	pop    %esi
58f392:	5b                   	pop    %ebx
58f393:	c3                   	ret
58f394:	76 6e                	jbe    0x58f404
58f396:	67 5f                	addr16 pop %edi
58f398:	69 6e 74 65 72 70 6f 	imul   $0x6f707265,0x74(%esi),%ebp
58f39f:	6c                   	insb   (%dx),%es:(%edi)
58f3a0:	61                   	popa
58f3a1:	74 65                	je     0x58f408
58f3a3:	28 29                	sub    %ch,(%ecx)
58f3a5:	00 00                	add    %al,(%eax)
58f3a7:	00 53 56             	add    %dl,0x56(%ebx)
58f3aa:	57                   	push   %edi
58f3ab:	55                   	push   %ebp
58f3ac:	83 c4 f4             	add    $0xfffffff4,%esp
58f3af:	89 14 24             	mov    %edx,(%esp)
58f3b2:	8b d8                	mov    %eax,%ebx
58f3b4:	8b 53 04             	mov    0x4(%ebx),%edx
58f3b7:	8b c3                	mov    %ebx,%eax
58f3b9:	e8 96 97 ff ff       	call   0x588b54
58f3be:	0f b7 f0             	movzwl %ax,%esi
58f3c1:	85 f6                	test   %esi,%esi
58f3c3:	0f 84 25 01 00 00    	je     0x58f4ee
58f3c9:	4e                   	dec    %esi
58f3ca:	8b 53 04             	mov    0x4(%ebx),%edx
58f3cd:	8b c3                	mov    %ebx,%eax
58f3cf:	e8 80 97 ff ff       	call   0x588b54
58f3d4:	0f b7 e8             	movzwl %ax,%ebp
58f3d7:	8b 53 04             	mov    0x4(%ebx),%edx
58f3da:	8b c3                	mov    %ebx,%eax
58f3dc:	e8 73 97 ff ff       	call   0x588b54
58f3e1:	0f b7 c0             	movzwl %ax,%eax
58f3e4:	89 44 24 04          	mov    %eax,0x4(%esp)