584fb6:	57                   	push   %edi
584fb7:	83 c4 e8             	add    $0xffffffe8,%esp
584fba:	8b f9                	mov    %ecx,%edi
584fbc:	8b f2                	mov    %edx,%esi
584fbe:	8b d8                	mov    %eax,%ebx
584fc0:	f6 03 02             	testb  $0x2,(%ebx)
584fc3:	74 39                	je     0x584ffe
584fc5:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fc8:	8b 53 5e             	mov    0x5e(%ebx),%edx
584fcb:	66 8b 06             	mov    (%esi),%ax
584fce:	e8 3d fe ff ff       	call   0x584e10
584fd3:	89 04 24             	mov    %eax,(%esp)
584fd6:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fd9:	8b 53 62             	mov    0x62(%ebx),%edx
584fdc:	66 8b 46 02          	mov    0x2(%esi),%ax
584fe0:	e8 2b fe ff ff       	call   0x584e10
584fe5:	89 44 24 04          	mov    %eax,0x4(%esp)
584fe9:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fec:	8b 53 66             	mov    0x66(%ebx),%edx
584fef:	66 8b 46 04          	mov    0x4(%esi),%ax
584ff3:	e8 18 fe ff ff       	call   0x584e10
584ff8:	89 44 24 08          	mov    %eax,0x8(%esp)
584ffc:	eb 25                	jmp    0x585023
584ffe:	0f b7 06             	movzwl (%esi),%eax
585001:	e8 0a 77 ff ff       	call   0x57c710
585006:	89 04 24             	mov    %eax,(%esp)
585009:	0f b7 46 02          	movzwl 0x2(%esi),%eax
58500d:	e8 fe 76 ff ff       	call   0x57c710
585012:	89 44 24 04          	mov    %eax,0x4(%esp)
585016:	0f b7 46 04          	movzwl 0x4(%esi),%eax
58501a:	e8 f1 76 ff ff       	call   0x57c710
58501f:	89 44 24 08          	mov    %eax,0x8(%esp)
585023:	f6 03 01             	testb  $0x1,(%ebx)
585026:	74 10                	je     0x585038
585028:	8b cc                	mov    %esp,%ecx
58502a:	8d 53 04             	lea    0x4(%ebx),%edx
58502d:	8d 44 24 0c          	lea    0xc(%esp),%eax
585031:	e8 fe 76 ff ff       	call   0x57c734
585036:	eb 17                	jmp    0x58504f
585038:	8b 04 24             	mov    (%esp),%eax
58503b:	89 44 24 0c          	mov    %eax,0xc(%esp)
58503f:	8b 44 24 04          	mov    0x4(%esp),%eax
585043:	89 44 24 10          	mov    %eax,0x10(%esp)
585047:	8b 44 24 08          	mov    0x8(%esp),%eax
58504b:	89 44 24 14          	mov    %eax,0x14(%esp)
58504f:	8b 44 24 0c          	mov    0xc(%esp),%eax
585053:	d1 e8                	shr    $1,%eax
585055:	e8 0a fe ff ff       	call   0x584e64
58505a:	66 89 07             	mov    %ax,(%edi)
58505d:	8b 44 24 10          	mov    0x10(%esp),%eax
585061:	d1 e8                	shr    $1,%eax
585063:	e8 fc fd ff ff       	call   0x584e64
585068:	66 89 47 02          	mov    %ax,0x2(%edi)
58506c:	8b 44 24 14          	mov    0x14(%esp),%eax
585070:	d1 e8                	shr    $1,%eax
585072:	e8 ed fd ff ff       	call   0x584e64
585077:	66 89 47 04          	mov    %ax,0x4(%edi)
58507b:	83 c4 18             	add    $0x18,%esp
58507e:	5f                   	pop    %edi
58507f:	5e                   	pop    %esi
585080:	5b                   	pop    %ebx
585081:	c3                   	ret
585082:	8b c0                	mov    %eax,%eax
585084:	53                   	push   %ebx
585085:	56                   	push   %esi
585086:	57                   	push   %edi
585087:	55                   	push   %ebp
585088:	83 c4 e4             	add    $0xffffffe4,%esp
58508b:	8b e9                	mov    %ecx,%ebp
58508d:	89 14 24             	mov    %edx,(%esp)
585090:	8b f8                	mov    %eax,%edi
585092:	8b 04 24             	mov    (%esp),%eax
585095:	0f b7 00             	movzwl (%eax),%eax
585098:	03 c0                	add    %eax,%eax
58509a:	89 44 24 04          	mov    %eax,0x4(%esp)
58509e:	8b 04 24             	mov    (%esp),%eax
5850a1:	0f b7 40 02          	movzwl 0x2(%eax),%eax
5850a5:	03 c0                	add    %eax,%eax
5850a7:	89 44 24 08          	mov    %eax,0x8(%esp)
5850ab:	8b 04 24             	mov    (%esp),%eax
5850ae:	0f b7 40 04          	movzwl 0x4(%eax),%eax
5850b2:	03 c0                	add    %eax,%eax
5850b4:	89 44 24 0c          	mov    %eax,0xc(%esp)
5850b8:	f6 07 01             	testb  $0x1,(%edi)
5850bb:	74 12                	je     0x5850cf
5850bd:	8d 4c 24 04          	lea    0x4(%esp),%ecx
5850c1:	8d 57 04             	lea    0x4(%edi),%edx
5850c4:	8d 44 24 10          	lea    0x10(%esp),%eax
5850c8:	e8 67 76 ff ff       	call   0x57c734
5850cd:	eb 18                	jmp    0x5850e7
5850cf:	8b 44 24 04          	mov    0x4(%esp),%eax
5850d3:	89 44 24 10          	mov    %eax,0x10(%esp)
5850d7:	8b 44 24 08          	mov    0x8(%esp),%eax
5850db:	89 44 24 14          	mov    %eax,0x14(%esp)
5850df:	8b 44 24 0c          	mov    0xc(%esp),%eax
5850e3:	89 44 24 18          	mov    %eax,0x18(%esp)
5850e7:	f6 07 02             	testb  $0x2,(%edi)
5850ea:	74 2e                	je     0x58511a
5850ec:	33 db                	xor    %ebx,%ebx
5850ee:	8d 74 24 10          	lea    0x10(%esp),%esi
5850f2:	8b 06                	mov    (%esi),%eax
5850f4:	e8 2f 76 ff ff       	call   0x57c728
5850f9:	e8 6e 77 ff ff       	call   0x57c86c
5850fe:	8d 4f 28             	lea    0x28(%edi),%ecx
585101:	8b 54 9f 5e          	mov    0x5e(%edi,%ebx,4),%edx
585105:	e8 76 77 ff ff       	call   0x57c880
58510a:	66 89 44 5d 00       	mov    %ax,0x0(%ebp,%ebx,2)
58510f:	43                   	inc    %ebx
585110:	83 c6 04             	add    $0x4,%esi
585113:	83 fb 03             	cmp    $0x3,%ebx
585116:	75 da                	jne    0x5850f2
585118:	eb 36                	jmp    0x585150
58511a:	8b 44 24 10          	mov    0x10(%esp),%eax
58511e:	e8 05 76 ff ff       	call   0x57c728
585123:	e8 44 77 ff ff       	call   0x57c86c
585128:	66 89 45 00          	mov    %ax,0x0(%ebp)
58512c:	8b 44 24 14          	mov    0x14(%esp),%eax
585130:	e8 f3 75 ff ff       	call   0x57c728
585135:	e8 32 77 ff ff       	call   0x57c86c
58513a:	66 89 45 02          	mov    %ax,0x2(%ebp)
58513e:	8b 44 24 18          	mov    0x18(%esp),%eax
585142:	e8 e1 75 ff ff       	call   0x57c728
585147:	e8 20 77 ff ff       	call   0x57c86c
58514c:	66 89 45 04          	mov    %ax,0x4(%ebp)
585150:	83 c4 1c             	add    $0x1c,%esp
585153:	5d                   	pop    %ebp
585154:	5f                   	pop    %edi
585155:	5e                   	pop    %esi
585156:	5b                   	pop    %ebx
585157:	c3                   	ret
585158:	53                   	push   %ebx
585159:	8b 18                	mov    (%eax),%ebx
58515b:	83 e3 0c             	and    $0xc,%ebx
58515e:	83 fb 0c             	cmp    $0xc,%ebx
585161:	75 07                	jne    0x58516a
585163:	e8 10 fd ff ff       	call   0x584e78
585168:	5b                   	pop    %ebx
585169:	c3                   	ret
58516a:	f6 00 04             	testb  $0x4,(%eax)
58516d:	74 07                	je     0x585176
58516f:	e8 40 fe ff ff       	call   0x584fb4
585174:	5b                   	pop    %ebx
585175:	c3                   	ret
585176:	e8 09 ff ff ff       	call   0x585084
58517b:	5b                   	pop    %ebx
58517c:	c3                   	ret
58517d:	8d 40 00             	lea    0x0(%eax),%eax
585180:	55                   	push   %ebp
585181:	8b ec                	mov    %esp,%ebp
585183:	83 c4 b4             	add    $0xffffffb4,%esp
585186:	53                   	push   %ebx
585187:	56                   	push   %esi
585188:	89 4d fc             	mov    %ecx,-0x4(%ebp)
58518b:	8b d8                	mov    %eax,%ebx
58518d:	89 55 f8             	mov    %edx,-0x8(%ebp)
585190:	8b 45 fc             	mov    -0x4(%ebp),%eax
585193:	89 45 f4             	mov    %eax,-0xc(%ebp)
585196:	8b 45 08             	mov    0x8(%ebp),%eax
585199:	8b f0                	mov    %eax,%esi
58519b:	4e                   	dec    %esi
58519c:	85 f6                	test   %esi,%esi
58519e:	72 37                	jb     0x5851d7
5851a0:	46                   	inc    %esi
5851a1:	8d 55 d4             	lea    -0x2c(%ebp),%edx
5851a4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5851a7:	8b c3                	mov    %ebx,%eax
5851a9:	ff 93 94 00 00 00    	call   *0x94(%ebx)
5851af:	89 45 f8             	mov    %eax,-0x8(%ebp)
5851b2:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
5851b5:	8d 55 d4             	lea    -0x2c(%ebp),%edx
5851b8:	8b 83 c8 00 00 00    	mov    0xc8(%ebx),%eax
5851be:	e8 95 ff ff ff       	call   0x585158
5851c3:	8d 55 b4             	lea    -0x4c(%ebp),%edx
5851c6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5851c9:	8b c3                	mov    %ebx,%eax
5851cb:	ff 93 a8 00 00 00    	call   *0xa8(%ebx)
5851d1:	89 45 f4             	mov    %eax,-0xc(%ebp)
5851d4:	4e                   	dec    %esi
5851d5:	75 ca                	jne    0x5851a1
5851d7:	5e                   	pop    %esi
5851d8:	5b                   	pop    %ebx
5851d9:	8b e5                	mov    %ebp,%esp
5851db:	5d                   	pop    %ebp
5851dc:	c2 04 00             	ret    $0x4
5851df:	90                   	nop
5851e0:	53                   	push   %ebx
5851e1:	56                   	push   %esi
5851e2:	8b f2                	mov    %edx,%esi
5851e4:	8b d8                	mov    %eax,%ebx
5851e6:	6a ff                	push   $0xffffffff
5851e8:	8b cb                	mov    %ebx,%ecx
5851ea:	ba 5a 59 58 72       	mov    $0x7258595a,%edx
5851ef:	8b c6                	mov    %esi,%eax
5851f1:	e8 52 6c ff ff       	call   0x57be48
5851f6:	85 c0                	test   %eax,%eax
5851f8:	7d 05                	jge    0x5851ff
5851fa:	33 c0                	xor    %eax,%eax
5851fc:	5e                   	pop    %esi
5851fd:	5b                   	pop    %ebx
5851fe:	c3                   	ret
5851ff:	6a ff                	push   $0xffffffff
585201:	8d 4b 18             	lea    0x18(%ebx),%ecx
585204:	ba 5a 59 58 67       	mov    $0x6758595a,%edx
585209:	8b c6                	mov    %esi,%eax
58520b:	e8 38 6c ff ff       	call   0x57be48
585210:	85 c0                	test   %eax,%eax
585212:	7d 05                	jge    0x585219
585214:	33 c0                	xor    %eax,%eax
585216:	5e                   	pop    %esi
585217:	5b                   	pop    %ebx
585218:	c3                   	ret
585219:	6a ff                	push   $0xffffffff
58521b:	8d 4b 30             	lea    0x30(%ebx),%ecx
58521e:	ba 5a 59 58 62       	mov    $0x6258595a,%edx
585223:	8b c6                	mov    %esi,%eax
585225:	e8 1e 6c ff ff       	call   0x57be48
58522a:	85 c0                	test   %eax,%eax
58522c:	7d 05                	jge    0x585233
58522e:	33 c0                	xor    %eax,%eax
585230:	5e                   	pop    %esi
585231:	5b                   	pop    %ebx
585232:	c3                   	ret
585233:	83 c8 ff             	or     $0xffffffff,%eax
585236:	5e                   	pop    %esi
585237:	5b                   	pop    %ebx
585238:	c3                   	ret
585239:	8d 40 00             	lea    0x0(%eax),%eax
58523c:	53                   	push   %ebx
58523d:	56                   	push   %esi
58523e:	83 c4 b8             	add    $0xffffffb8,%esp
585241:	8b f2                	mov    %edx,%esi
585243:	8b d8                	mov    %eax,%ebx
585245:	8b c4                	mov    %esp,%eax
585247:	8b d6                	mov    %esi,%edx
585249:	e8 92 ff ff ff       	call   0x5851e0
58524e:	85 c0                	test   %eax,%eax
585250:	75 04                	jne    0x585256
585252:	33 c0                	xor    %eax,%eax
585254:	eb 62                	jmp    0x5852b8
585256:	ff 74 24 04          	push   0x4(%esp)
58525a:	ff 74 24 04          	push   0x4(%esp)
58525e:	ff 74 24 24          	push   0x24(%esp)
585262:	ff 74 24 24          	push   0x24(%esp)
585266:	ff 74 24 44          	push   0x44(%esp)
58526a:	ff 74 24 44          	push   0x44(%esp)
58526e:	8b c3                	mov    %ebx,%eax
585270:	e8 5f 65 ff ff       	call   0x57b7d4
585275:	ff 74 24 0c          	push   0xc(%esp)
585279:	ff 74 24 0c          	push   0xc(%esp)
58527d:	ff 74 24 2c          	push   0x2c(%esp)
585281:	ff 74 24 2c          	push   0x2c(%esp)
585285:	ff 74 24 4c          	push   0x4c(%esp)
585289:	ff 74 24 4c          	push   0x4c(%esp)
58528d:	8d 43 18             	lea    0x18(%ebx),%eax
585290:	e8 3f 65 ff ff       	call   0x57b7d4
585295:	ff 74 24 14          	push   0x14(%esp)
585299:	ff 74 24 14          	push   0x14(%esp)
58529d:	ff 74 24 34          	push   0x34(%esp)
5852a1:	ff 74 24 34          	push   0x34(%esp)
5852a5:	ff 74 24 54          	push   0x54(%esp)
5852a9:	ff 74 24 54          	push   0x54(%esp)
5852ad:	8d 43 30             	lea    0x30(%ebx),%eax
5852b0:	e8 1f 65 ff ff       	call   0x57b7d4
5852b5:	83 c8 ff             	or     $0xffffffff,%eax
5852b8:	83 c4 48             	add    $0x48,%esp
5852bb:	5e                   	pop    %esi
5852bc:	5b                   	pop    %ebx
5852bd:	c3                   	ret
5852be:	8b c0                	mov    %eax,%eax
5852c0:	53                   	push   %ebx
5852c1:	56                   	push   %esi
5852c2:	8b f0                	mov    %eax,%esi
5852c4:	8b 06                	mov    (%esi),%eax
5852c6:	e8 3d bc ff ff       	call   0x580f08
5852cb:	8b d8                	mov    %eax,%ebx
5852cd:	85 db                	test   %ebx,%ebx
5852cf:	75 05                	jne    0x5852d6
5852d1:	33 c0                	xor    %eax,%eax
5852d3:	5e                   	pop    %esi
5852d4:	5b                   	pop    %ebx
5852d5:	c3                   	ret
5852d6:	8b 0e                	mov    (%esi),%ecx
5852d8:	03 c9                	add    %ecx,%ecx
5852da:	8d 56 04             	lea    0x4(%esi),%edx
5852dd:	8d 43 04             	lea    0x4(%ebx),%eax
5852e0:	e8 db 2b e8 ff       	call   0x407ec0
5852e5:	8b c3                	mov    %ebx,%eax
5852e7:	5e                   	pop    %esi
5852e8:	5b                   	pop    %ebx
5852e9:	c3                   	ret
5852ea:	8b c0                	mov    %eax,%eax
5852ec:	53                   	push   %ebx
5852ed:	56                   	push   %esi
5852ee:	8b d8                	mov    %eax,%ebx
5852f0:	8b c3                	mov    %ebx,%eax
5852f2:	e8 21 6b ff ff       	call   0x57be18
5852f7:	85 c0                	test   %eax,%eax
5852f9:	7d 05                	jge    0x585300
5852fb:	33 c0                	xor    %eax,%eax
5852fd:	5e                   	pop    %esi
5852fe:	5b                   	pop    %ebx
5852ff:	c3                   	ret
585300:	83 3b 00             	cmpl   $0x0,(%ebx)
585303:	75 0f                	jne    0x585314
585305:	8b 84 83 18 03 00 00 	mov    0x318(%ebx,%eax,4),%eax
58530c:	e8 af ff ff ff       	call   0x5852c0
585311:	5e                   	pop    %esi
585312:	5b                   	pop    %ebx
585313:	c3                   	ret
585314:	8b b4 83 50 02 00 00 	mov    0x250(%ebx,%eax,4),%esi
58531b:	8b c6                	mov    %esi,%eax
58531d:	99                   	cltd
58531e:	52                   	push   %edx
58531f:	50                   	push   %eax
585320:	8b 03                	mov    (%ebx),%eax
585322:	ff 93 f0 03 00 00    	call   *0x3f0(%ebx)
585328:	85 c0                	test   %eax,%eax
58532a:	74 05                	je     0x585331
58532c:	33 c0                	xor    %eax,%eax
58532e:	5e                   	pop    %esi
58532f:	5b                   	pop    %ebx
585330:	c3                   	ret
585331:	8b c3                	mov    %ebx,%eax
585333:	e8 0c c2 ff ff       	call   0x581544
585338:	5e                   	pop    %esi
585339:	5b                   	pop    %ebx
58533a:	c3                   	ret
58533b:	90                   	nop
58533c:	53                   	push   %ebx
58533d:	56                   	push   %esi
58533e:	57                   	push   %edi
58533f:	83 c4 b8             	add    $0xffffffb8,%esp
585342:	8b da                	mov    %edx,%ebx
585344:	89 04 24             	mov    %eax,(%esp)
585347:	8b 04 24             	mov    (%esp),%eax
58534a:	e8 b9 bb ff ff       	call   0x580f08
58534f:	8b f8                	mov    %eax,%edi
585351:	85 ff                	test   %edi,%edi
585353:	75 04                	jne    0x585359
585355:	33 c0                	xor    %eax,%eax
585357:	eb 64                	jmp    0x5853bd
585359:	8d 54 24 08          	lea    0x8(%esp),%edx
58535d:	8b 03                	mov    (%ebx),%eax
58535f:	e8 e8 a4 ff ff       	call   0x57f84c
585364:	8d 43 04             	lea    0x4(%ebx),%eax
585367:	89 44 24 04          	mov    %eax,0x4(%esp)
58536b:	8b 34 24             	mov    (%esp),%esi
58536e:	4e                   	dec    %esi
58536f:	85 f6                	test   %esi,%esi
585371:	7c 48                	jl     0x5853bb