598ed2:	56                   	push   %esi
598ed3:	57                   	push   %edi
598ed4:	8b 7c 24 48          	mov    0x48(%esp),%edi
598ed8:	33 f6                	xor    %esi,%esi
598eda:	8b 95 04 04 00 00    	mov    0x404(%ebp),%edx
598ee0:	89 4c 24 14          	mov    %ecx,0x14(%esp)
598ee4:	89 54 24 28          	mov    %edx,0x28(%esp)
598ee8:	8b 42 10             	mov    0x10(%edx),%eax
598eeb:	8b d8                	mov    %eax,%ebx
598eed:	81 e3 00 00 03 00    	and    $0x30000,%ebx
598ef3:	89 44 24 10          	mov    %eax,0x10(%esp)
598ef7:	83 ff ff             	cmp    $0xffffffff,%edi
598efa:	0f 84 a7 00 00 00    	je     0x598fa7
598f00:	83 ff fe             	cmp    $0xfffffffe,%edi
598f03:	75 1e                	jne    0x598f23
598f05:	8b 2a                	mov    (%edx),%ebp
598f07:	b8 67 66 66 66       	mov    $0x66666667,%eax
598f0c:	8b cd                	mov    %ebp,%ecx
598f0e:	2b ca                	sub    %edx,%ecx
598f10:	83 e9 14             	sub    $0x14,%ecx
598f13:	f7 e9                	imul   %ecx
598f15:	c1 fa 03             	sar    $0x3,%edx
598f18:	8b fa                	mov    %edx,%edi
598f1a:	c1 ef 1f             	shr    $0x1f,%edi
598f1d:	03 fa                	add    %edx,%edi
598f1f:	33 c9                	xor    %ecx,%ecx
598f21:	eb 09                	jmp    0x598f2c
598f23:	8d 47 01             	lea    0x1(%edi),%eax
598f26:	8d 04 80             	lea    (%eax,%eax,4),%eax
598f29:	8d 2c 82             	lea    (%edx,%eax,4),%ebp
598f2c:	8b 44 24 38          	mov    0x38(%esp),%eax
598f30:	8b 55 00             	mov    0x0(%ebp),%edx
598f33:	81 64 24 10 01 00 03 	andl   $0x30001,0x10(%esp)
598f3a:	00
598f3b:	89 54 24 1c          	mov    %edx,0x1c(%esp)
598f3f:	8b 40 7c             	mov    0x7c(%eax),%eax
598f42:	8d 04 b8             	lea    (%eax,%edi,4),%eax
598f45:	05 7c 02 00 00       	add    $0x27c,%eax
598f4a:	89 44 24 24          	mov    %eax,0x24(%esp)
598f4e:	8b 45 04             	mov    0x4(%ebp),%eax
598f51:	8b 6d 08             	mov    0x8(%ebp),%ebp
598f54:	89 44 24 20          	mov    %eax,0x20(%esp)
598f58:	85 d2                	test   %edx,%edx
598f5a:	74 08                	je     0x598f64
598f5c:	85 c0                	test   %eax,%eax
598f5e:	0f 85 ba 00 00 00    	jne    0x59901e
598f64:	33 db                	xor    %ebx,%ebx
598f66:	8b 6c 24 38          	mov    0x38(%esp),%ebp
598f6a:	55                   	push   %ebp
598f6b:	e8 50 71 f5 ff       	call   0x4f00c0
598f70:	25 00 ff ff ff       	and    $0xffffff00,%eax
598f75:	83 c4 04             	add    $0x4,%esp
598f78:	3d 00 03 00 00       	cmp    $0x300,%eax
598f7d:	0f 85 c6 04 00 00    	jne    0x599449
598f83:	55                   	push   %ebp
598f84:	e8 37 71 f5 ff       	call   0x4f00c0
598f89:	83 c4 04             	add    $0x4,%esp
598f8c:	3d 03 03 00 00       	cmp    $0x303,%eax
598f91:	0f 8c b2 04 00 00    	jl     0x599449
598f97:	8b 4c 24 24          	mov    0x24(%esp),%ecx
598f9b:	8b 01                	mov    (%ecx),%eax
598f9d:	25 02 01 00 00       	and    $0x102,%eax
598fa2:	e9 ab 04 00 00       	jmp    0x599452
598fa7:	8b 44 24 3c          	mov    0x3c(%esp),%eax
598fab:	89 44 24 1c          	mov    %eax,0x1c(%esp)
598faf:	85 c0                	test   %eax,%eax
598fb1:	0f 84 b5 04 00 00    	je     0x59946c
598fb7:	8b 44 24 40          	mov    0x40(%esp),%eax
598fbb:	89 44 24 20          	mov    %eax,0x20(%esp)
598fbf:	85 c0                	test   %eax,%eax
598fc1:	0f 84 a5 04 00 00    	je     0x59946c
598fc7:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
598fcb:	51                   	push   %ecx
598fcc:	50                   	push   %eax
598fcd:	e8 0e 23 ff ff       	call   0x58b2e0
598fd2:	83 c4 08             	add    $0x8,%esp
598fd5:	85 c0                	test   %eax,%eax
598fd7:	0f 84 8f 04 00 00    	je     0x59946c
598fdd:	8b 45 7c             	mov    0x7c(%ebp),%eax
598fe0:	8b 7c 24 2c          	mov    0x2c(%esp),%edi
598fe4:	8b 6c 24 44          	mov    0x44(%esp),%ebp
598fe8:	8b 54 24 3c          	mov    0x3c(%esp),%edx
598fec:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
598ff3:	00
598ff4:	8d 04 b8             	lea    (%eax,%edi,4),%eax
598ff7:	05 7c 02 00 00       	add    $0x27c,%eax
598ffc:	89 44 24 24          	mov    %eax,0x24(%esp)
599000:	8b 44 24 28          	mov    0x28(%esp),%eax
599004:	8b 48 10             	mov    0x10(%eax),%ecx
599007:	81 e1 01 00 03 00    	and    $0x30001,%ecx
59900d:	f7 d9                	neg    %ecx
59900f:	1b c9                	sbb    %ecx,%ecx
599011:	81 e1 a0 06 00 00    	and    $0x6a0,%ecx
599017:	83 c1 50             	add    $0x50,%ecx
59901a:	89 4c 24 14          	mov    %ecx,0x14(%esp)
59901e:	85 db                	test   %ebx,%ebx
599020:	74 40                	je     0x599062
599022:	8b c1                	mov    %ecx,%eax
599024:	53                   	push   %ebx
599025:	0d 00 08 00 00       	or     $0x800,%eax
59902a:	85 c9                	test   %ecx,%ecx
59902c:	55                   	push   %ebp
59902d:	0f 44 c1             	cmove  %ecx,%eax
599030:	52                   	push   %edx
599031:	6a 00                	push   $0x0
599033:	89 44 24 24          	mov    %eax,0x24(%esp)
599037:	89 44 24 58          	mov    %eax,0x58(%esp)
59903b:	e8 60 ec fb ff       	call   0x557ca0
599040:	8b 5c 24 24          	mov    0x24(%esp),%ebx
599044:	83 c4 10             	add    $0x10,%esp
599047:	85 c0                	test   %eax,%eax
599049:	75 07                	jne    0x599052
59904b:	be 00 08 00 00       	mov    $0x800,%esi
599050:	eb 14                	jmp    0x599066
599052:	89 5c 24 14          	mov    %ebx,0x14(%esp)
599056:	39 74 24 48          	cmp    %esi,0x48(%esp)
59905a:	0f 84 06 ff ff ff    	je     0x598f66
599060:	eb 04                	jmp    0x599066
599062:	8b 5c 24 14          	mov    0x14(%esp),%ebx
599066:	ff 74 24 38          	push   0x38(%esp)
59906a:	e8 51 70 f5 ff       	call   0x4f00c0
59906f:	25 00 ff ff ff       	and    $0xffffff00,%eax
599074:	83 c4 04             	add    $0x4,%esp
599077:	3d 00 03 00 00       	cmp    $0x300,%eax
59907c:	0f 85 e7 01 00 00    	jne    0x599269
599082:	ff 74 24 38          	push   0x38(%esp)
599086:	e8 35 70 f5 ff       	call   0x4f00c0
59908b:	83 c4 04             	add    $0x4,%esp
59908e:	3d 03 03 00 00       	cmp    $0x303,%eax
599093:	0f 8c d0 01 00 00    	jl     0x599269
599099:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
59909e:	0f 84 c5 01 00 00    	je     0x599269
5990a4:	8b 44 24 38          	mov    0x38(%esp),%eax
5990a8:	8b 40 7c             	mov    0x7c(%eax),%eax
5990ab:	83 b8 6c 02 00 00 00 	cmpl   $0x0,0x26c(%eax)
5990b2:	0f 85 06 01 00 00    	jne    0x5991be
5990b8:	83 b8 68 02 00 00 00 	cmpl   $0x0,0x268(%eax)
5990bf:	0f 85 f9 00 00 00    	jne    0x5991be
5990c5:	83 ff 06             	cmp    $0x6,%edi
5990c8:	0f 87 e7 00 00 00    	ja     0x5991b5
5990ce:	ff 24 bd 78 94 59 00 	jmp    *0x599478(,%edi,4)
5990d5:	c7 44 24 18 06 00 00 	movl   $0x6,0x18(%esp)
5990dc:	00
5990dd:	c7 44 24 48 41 00 00 	movl   $0x41,0x48(%esp)
5990e4:	00
5990e5:	eb 58                	jmp    0x59913f
5990e7:	c7 44 24 18 74 00 00 	movl   $0x74,0x18(%esp)
5990ee:	00
5990ef:	c7 44 24 48 71 00 00 	movl   $0x71,0x48(%esp)
5990f6:	00
5990f7:	eb 46                	jmp    0x59913f
5990f9:	c7 44 24 18 98 01 00 	movl   $0x198,0x18(%esp)
599100:	00
599101:	c7 44 24 48 a0 01 00 	movl   $0x1a0,0x48(%esp)
599108:	00
599109:	eb 34                	jmp    0x59913f
59910b:	c7 44 24 18 2b 03 00 	movl   $0x32b,0x18(%esp)
599112:	00
599113:	c7 44 24 48 27 03 00 	movl   $0x327,0x48(%esp)
59911a:	00
59911b:	eb 22                	jmp    0x59913f
59911d:	c7 44 24 18 d3 03 00 	movl   $0x3d3,0x18(%esp)
599124:	00
599125:	c7 44 24 48 d9 03 00 	movl   $0x3d9,0x48(%esp)
59912c:	00
59912d:	eb 10                	jmp    0x59913f
59912f:	c7 44 24 18 d4 03 00 	movl   $0x3d4,0x18(%esp)
599136:	00
599137:	c7 44 24 48 da 03 00 	movl   $0x3da,0x48(%esp)
59913e:	00
59913f:	8b 44 24 28          	mov    0x28(%esp),%eax
599143:	8b 90 d0 00 00 00    	mov    0xd0(%eax),%edx
599149:	89 54 24 28          	mov    %edx,0x28(%esp)
59914d:	85 d2                	test   %edx,%edx
59914f:	74 75                	je     0x5991c6
599151:	8b 80 d4 00 00 00    	mov    0xd4(%eax),%eax
599157:	33 ff                	xor    %edi,%edi
599159:	89 44 24 30          	mov    %eax,0x30(%esp)
59915d:	85 c0                	test   %eax,%eax
59915f:	74 43                	je     0x5991a4
599161:	0f b7 12             	movzwl (%edx),%edx
599164:	33 c9                	xor    %ecx,%ecx
599166:	b8 b8 76 66 00       	mov    $0x6676b8,%eax
59916b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
599170:	66 39 50 04          	cmp    %dx,0x4(%eax)
599174:	74 0b                	je     0x599181
599176:	41                   	inc    %ecx
599177:	83 c0 20             	add    $0x20,%eax
59917a:	83 f9 17             	cmp    $0x17,%ecx
59917d:	72 f1                	jb     0x599170
59917f:	eb 0f                	jmp    0x599190
599181:	83 78 08 40          	cmpl   $0x40,0x8(%eax)
599185:	75 09                	jne    0x599190
599187:	8b 4c 24 18          	mov    0x18(%esp),%ecx
59918b:	39 48 10             	cmp    %ecx,0x10(%eax)
59918e:	74 36                	je     0x5991c6
599190:	8b 54 24 28          	mov    0x28(%esp),%edx
599194:	47                   	inc    %edi
599195:	8b 44 24 30          	mov    0x30(%esp),%eax
599199:	83 c2 02             	add    $0x2,%edx
59919c:	89 54 24 28          	mov    %edx,0x28(%esp)
5991a0:	3b f8                	cmp    %eax,%edi
5991a2:	72 bd                	jb     0x599161
5991a4:	3b f8                	cmp    %eax,%edi
5991a6:	75 1e                	jne    0x5991c6
5991a8:	85 db                	test   %ebx,%ebx
5991aa:	0f 85 c0 00 00 00    	jne    0x599270
5991b0:	e9 b1 fd ff ff       	jmp    0x598f66
5991b5:	83 cf ff             	or     $0xffffffff,%edi
5991b8:	89 7c 24 48          	mov    %edi,0x48(%esp)
5991bc:	eb 0c                	jmp    0x5991ca
5991be:	33 ff                	xor    %edi,%edi
5991c0:	89 7c 24 48          	mov    %edi,0x48(%esp)
5991c4:	eb 04                	jmp    0x5991ca
5991c6:	8b 7c 24 48          	mov    0x48(%esp),%edi
5991ca:	8b 54 24 38          	mov    0x38(%esp),%edx
5991ce:	8b 4a 04             	mov    0x4(%edx),%ecx
5991d1:	8b 41 64             	mov    0x64(%ecx),%eax
5991d4:	f6 40 30 08          	testb  $0x8,0x30(%eax)
5991d8:	75 66                	jne    0x599240
5991da:	8b 01                	mov    (%ecx),%eax
5991dc:	3d 04 03 00 00       	cmp    $0x304,%eax
5991e1:	7c 5d                	jl     0x599240
5991e3:	3d 00 00 01 00       	cmp    $0x10000,%eax
5991e8:	74 56                	je     0x599240
5991ea:	ff 74 24 20          	push   0x20(%esp)
5991ee:	ff 74 24 20          	push   0x20(%esp)
5991f2:	52                   	push   %edx
5991f3:	e8 08 e6 ff ff       	call   0x597800
5991f8:	83 c4 0c             	add    $0xc,%esp
5991fb:	85 c0                	test   %eax,%eax
5991fd:	74 03                	je     0x599202
5991ff:	83 ce 10             	or     $0x10,%esi
599202:	55                   	push   %ebp
599203:	83 ce 20             	or     $0x20,%esi
599206:	33 ff                	xor    %edi,%edi
599208:	e8 b3 be f4 ff       	call   0x4e50c0
59920d:	83 c4 04             	add    $0x4,%esp
599210:	85 c0                	test   %eax,%eax
599212:	7e 5c                	jle    0x599270
599214:	57                   	push   %edi
599215:	55                   	push   %ebp
599216:	e8 65 c0 f4 ff       	call   0x4e5280
59921b:	ff 74 24 50          	push   0x50(%esp)
59921f:	50                   	push   %eax
599220:	ff 74 24 48          	push   0x48(%esp)
599224:	e8 37 06 00 00       	call   0x599860
599229:	83 c4 14             	add    $0x14,%esp
59922c:	85 c0                	test   %eax,%eax
59922e:	74 2c                	je     0x59925c
599230:	55                   	push   %ebp
599231:	47                   	inc    %edi
599232:	e8 89 be f4 ff       	call   0x4e50c0
599237:	83 c4 04             	add    $0x4,%esp
59923a:	3b f8                	cmp    %eax,%edi
59923c:	7c d6                	jl     0x599214
59923e:	eb 30                	jmp    0x599270
599240:	57                   	push   %edi
599241:	ff 74 24 20          	push   0x20(%esp)
599245:	52                   	push   %edx
599246:	e8 15 06 00 00       	call   0x599860
59924b:	83 c4 0c             	add    $0xc,%esp
59924e:	85 c0                	test   %eax,%eax
599250:	75 ad                	jne    0x5991ff
599252:	85 db                	test   %ebx,%ebx
599254:	0f 84 0c fd ff ff    	je     0x598f66
59925a:	eb a6                	jmp    0x599202
59925c:	85 db                	test   %ebx,%ebx
59925e:	0f 84 02 fd ff ff    	je     0x598f66
599264:	83 e6 df             	and    $0xffffffdf,%esi
599267:	eb 07                	jmp    0x599270
599269:	85 db                	test   %ebx,%ebx
59926b:	74 03                	je     0x599270
59926d:	83 ce 30             	or     $0x30,%esi
599270:	6a 01                	push   $0x1
599272:	ff 74 24 20          	push   0x20(%esp)
599276:	ff 74 24 40          	push   0x40(%esp)
59927a:	e8 81 fb ff ff       	call   0x598e00
59927f:	83 c4 0c             	add    $0xc,%esp
599282:	85 c0                	test   %eax,%eax
599284:	74 05                	je     0x59928b
599286:	83 ce 40             	or     $0x40,%esi
599289:	eb 08                	jmp    0x599293
59928b:	85 db                	test   %ebx,%ebx
59928d:	0f 84 d3 fc ff ff    	je     0x598f66
599293:	8b 44 24 38          	mov    0x38(%esp),%eax
599297:	8b 4c 24 10          	mov    0x10(%esp),%ecx
59929b:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
59929f:	75 08                	jne    0x5992a9
5992a1:	81 ce 80 00 00 00    	or     $0x80,%esi
5992a7:	eb 59                	jmp    0x599302
5992a9:	85 c9                	test   %ecx,%ecx
5992ab:	74 55                	je     0x599302
5992ad:	55                   	push   %ebp
5992ae:	81 ce 80 00 00 00    	or     $0x80,%esi
5992b4:	33 ff                	xor    %edi,%edi
5992b6:	e8 05 be f4 ff       	call   0x4e50c0
5992bb:	83 c4 04             	add    $0x4,%esp
5992be:	85 c0                	test   %eax,%eax
5992c0:	7e 38                	jle    0x5992fa
5992c2:	57                   	push   %edi
5992c3:	55                   	push   %ebp
5992c4:	e8 b7 bf f4 ff       	call   0x4e5280
5992c9:	6a 00                	push   $0x0
5992cb:	50                   	push   %eax
5992cc:	ff 74 24 48          	push   0x48(%esp)
5992d0:	e8 2b fb ff ff       	call   0x598e00
5992d5:	83 c4 14             	add    $0x14,%esp
5992d8:	85 c0                	test   %eax,%eax
5992da:	74 10                	je     0x5992ec
5992dc:	55                   	push   %ebp
5992dd:	47                   	inc    %edi
5992de:	e8 dd bd f4 ff       	call   0x4e50c0
5992e3:	83 c4 04             	add    $0x4,%esp
5992e6:	3b f8                	cmp    %eax,%edi
5992e8:	7c d8                	jl     0x5992c2
5992ea:	eb 0e                	jmp    0x5992fa
5992ec:	85 db                	test   %ebx,%ebx
5992ee:	0f 84 72 fc ff ff    	je     0x598f66
5992f4:	81 e6 7f ff ff ff    	and    $0xffffff7f,%esi
5992fa:	8b 44 24 38          	mov    0x38(%esp),%eax
5992fe:	8b 4c 24 10          	mov    0x10(%esp),%ecx
599302:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
599306:	0f 85 1f 01 00 00    	jne    0x59942b
59930c:	85 c9                	test   %ecx,%ecx
59930e:	0f 84 17 01 00 00    	je     0x59942b
599314:	ff 74 24 20          	push   0x20(%esp)
599318:	e8 a3 6d f5 ff       	call   0x4f00c0
59931d:	83 c4 04             	add    $0x4,%esp
599320:	83 f8 06             	cmp    $0x6,%eax
599323:	74 22                	je     0x599347
599325:	83 f8 74             	cmp    $0x74,%eax
599328:	74 16                	je     0x599340
59932a:	3d 98 01 00 00       	cmp    $0x198,%eax
59932f:	75 07                	jne    0x599338
599331:	bf 40 00 00 00       	mov    $0x40,%edi
599336:	eb 14                	jmp    0x59934c
599338:	81 ce 00 04 00 00    	or     $0x400,%esi
59933e:	eb 4e                	jmp    0x59938e
599340:	bf 02 00 00 00       	mov    $0x2,%edi
599345:	eb 05                	jmp    0x59934c
599347:	bf 01 00 00 00       	mov    $0x1,%edi
59934c:	8b 44 24 38          	mov    0x38(%esp),%eax
599350:	33 d2                	xor    %edx,%edx
599352:	8b 40 7c             	mov    0x7c(%eax),%eax
599355:	8b 98 20 02 00 00    	mov    0x220(%eax),%ebx
59935b:	8b 88 1c 02 00 00    	mov    0x21c(%eax),%ecx
599361:	85 db                	test   %ebx,%ebx
599363:	74 15                	je     0x59937a
599365:	0f b6 01             	movzbl (%ecx),%eax