58fd7a:	e8 71 41 f5 ff       	call   0x4e3ef0
58fd7f:	83 c4 08             	add    $0x8,%esp
58fd82:	85 c0                	test   %eax,%eax
58fd84:	75 b5                	jne    0x58fd3b
58fd86:	8b de                	mov    %esi,%ebx
58fd88:	85 f6                	test   %esi,%esi
58fd8a:	74 af                	je     0x58fd3b
58fd8c:	53                   	push   %ebx
58fd8d:	e8 2e 02 00 00       	call   0x58ffc0
58fd92:	83 c4 04             	add    $0x4,%esp
58fd95:	33 f6                	xor    %esi,%esi
58fd97:	ff b7 18 02 00 00    	push   0x218(%edi)
58fd9d:	e8 9e 22 f5 ff       	call   0x4e2040
58fda2:	83 c4 04             	add    $0x4,%esp
58fda5:	8b c6                	mov    %esi,%eax
58fda7:	5f                   	pop    %edi
58fda8:	5e                   	pop    %esi
58fda9:	5b                   	pop    %ebx
58fdaa:	c3                   	ret
58fdab:	89 86 cc 01 00 00    	mov    %eax,0x1cc(%esi)
58fdb1:	89 b0 c8 01 00 00    	mov    %esi,0x1c8(%eax)
58fdb7:	89 8e c8 01 00 00    	mov    %ecx,0x1c8(%esi)
58fdbd:	89 31                	mov    %esi,(%ecx)
58fdbf:	6a 00                	push   $0x0
58fdc1:	6a 00                	push   $0x0
58fdc3:	6a 2b                	push   $0x2b
58fdc5:	57                   	push   %edi
58fdc6:	e8 55 8a ff ff       	call   0x588820
58fdcb:	83 c4 10             	add    $0x10,%esp
58fdce:	85 c0                	test   %eax,%eax
58fdd0:	0f 8e bf 00 00 00    	jle    0x58fe95
58fdd6:	6a 00                	push   $0x0
58fdd8:	6a 00                	push   $0x0
58fdda:	6a 2b                	push   $0x2b
58fddc:	57                   	push   %edi
58fddd:	e8 3e 8a ff ff       	call   0x588820
58fde2:	6a 00                	push   $0x0
58fde4:	6a 00                	push   $0x0
58fde6:	6a 14                	push   $0x14
58fde8:	57                   	push   %edi
58fde9:	8b f0                	mov    %eax,%esi
58fdeb:	e8 30 8a ff ff       	call   0x588820
58fdf0:	83 c4 20             	add    $0x20,%esp
58fdf3:	3b c6                	cmp    %esi,%eax
58fdf5:	0f 8e 9a 00 00 00    	jle    0x58fe95
58fdfb:	55                   	push   %ebp
58fdfc:	0f 1f 40 00          	nopl   0x0(%eax)
58fe00:	8b 77 20             	mov    0x20(%edi),%esi
58fe03:	33 ed                	xor    %ebp,%ebp
58fe05:	85 f6                	test   %esi,%esi
58fe07:	0f 84 87 00 00 00    	je     0x58fe94
58fe0d:	39 ae 48 01 00 00    	cmp    %ebp,0x148(%esi)
58fe13:	74 7f                	je     0x58fe94
58fe15:	56                   	push   %esi
58fe16:	ff 77 14             	push   0x14(%edi)
58fe19:	e8 d2 40 f5 ff       	call   0x4e3ef0
58fe1e:	8b d8                	mov    %eax,%ebx
58fe20:	83 c4 08             	add    $0x8,%esp
58fe23:	85 db                	test   %ebx,%ebx
58fe25:	74 1a                	je     0x58fe41
58fe27:	53                   	push   %ebx
58fe28:	ff 77 14             	push   0x14(%edi)
58fe2b:	bd 01 00 00 00       	mov    $0x1,%ebp
58fe30:	e8 7b 3c f5 ff       	call   0x4e3ab0
58fe35:	8b d8                	mov    %eax,%ebx
58fe37:	53                   	push   %ebx
58fe38:	57                   	push   %edi
58fe39:	e8 02 03 00 00       	call   0x590140
58fe3e:	83 c4 10             	add    $0x10,%esp
58fe41:	c7 86 98 01 00 00 01 	movl   $0x1,0x198(%esi)
58fe48:	00 00 00
58fe4b:	8b 47 30             	mov    0x30(%edi),%eax
58fe4e:	85 c0                	test   %eax,%eax
58fe50:	74 07                	je     0x58fe59
58fe52:	56                   	push   %esi
58fe53:	57                   	push   %edi
58fe54:	ff d0                	call   *%eax
58fe56:	83 c4 08             	add    $0x8,%esp
58fe59:	85 ed                	test   %ebp,%ebp
58fe5b:	74 37                	je     0x58fe94
58fe5d:	53                   	push   %ebx
58fe5e:	e8 5d 01 00 00       	call   0x58ffc0
58fe63:	b9 01 00 00 00       	mov    $0x1,%ecx
58fe68:	8d 47 58             	lea    0x58(%edi),%eax
58fe6b:	f0 0f c1 08          	lock xadd %ecx,(%eax)
58fe6f:	6a 00                	push   $0x0
58fe71:	6a 00                	push   $0x0
58fe73:	6a 2b                	push   $0x2b
58fe75:	57                   	push   %edi
58fe76:	e8 a5 89 ff ff       	call   0x588820
58fe7b:	6a 00                	push   $0x0
58fe7d:	6a 00                	push   $0x0
58fe7f:	6a 14                	push   $0x14
58fe81:	57                   	push   %edi
58fe82:	8b f0                	mov    %eax,%esi
58fe84:	e8 97 89 ff ff       	call   0x588820
58fe89:	83 c4 24             	add    $0x24,%esp
58fe8c:	3b c6                	cmp    %esi,%eax
58fe8e:	0f 8f 6c ff ff ff    	jg     0x58fe00
58fe94:	5d                   	pop    %ebp
58fe95:	ff b7 18 02 00 00    	push   0x218(%edi)
58fe9b:	be 01 00 00 00       	mov    $0x1,%esi
58fea0:	e8 9b 21 f5 ff       	call   0x4e2040
58fea5:	83 c4 04             	add    $0x4,%esp
58fea8:	8b c6                	mov    %esi,%eax
58feaa:	5f                   	pop    %edi
58feab:	5e                   	pop    %esi
58feac:	5b                   	pop    %ebx
58fead:	c3                   	ret
58feae:	cc                   	int3
58feaf:	cc                   	int3
58feb0:	b8 0c 00 00 00       	mov    $0xc,%eax
58feb5:	e8 f6 18 04 00       	call   0x5d17b0
58feba:	57                   	push   %edi
58febb:	8b 7c 24 14          	mov    0x14(%esp),%edi
58febf:	89 7c 24 04          	mov    %edi,0x4(%esp)
58fec3:	8b 47 14             	mov    0x14(%edi),%eax
58fec6:	89 44 24 0c          	mov    %eax,0xc(%esp)
58feca:	85 c0                	test   %eax,%eax
58fecc:	74 53                	je     0x58ff21
58fece:	8b 44 24 18          	mov    0x18(%esp),%eax
58fed2:	56                   	push   %esi
58fed3:	ff b7 18 02 00 00    	push   0x218(%edi)
58fed9:	89 44 24 10          	mov    %eax,0x10(%esp)
58fedd:	e8 de 20 f5 ff       	call   0x4e1fc0
58fee2:	ff 77 14             	push   0x14(%edi)
58fee5:	e8 d6 3d f5 ff       	call   0x4e3cc0
58feea:	6a 00                	push   $0x0
58feec:	ff 77 14             	push   0x14(%edi)
58feef:	8b f0                	mov    %eax,%esi
58fef1:	e8 4a 40 f5 ff       	call   0x4e3f40
58fef6:	8d 44 24 18          	lea    0x18(%esp),%eax
58fefa:	50                   	push   %eax
58fefb:	68 60 12 59 00       	push   $0x591260
58ff00:	ff 74 24 28          	push   0x28(%esp)
58ff04:	e8 e7 3c f5 ff       	call   0x4e3bf0
58ff09:	56                   	push   %esi
58ff0a:	ff 77 14             	push   0x14(%edi)
58ff0d:	e8 2e 40 f5 ff       	call   0x4e3f40
58ff12:	ff b7 18 02 00 00    	push   0x218(%edi)
58ff18:	e8 23 21 f5 ff       	call   0x4e2040
58ff1d:	83 c4 28             	add    $0x28,%esp
58ff20:	5e                   	pop    %esi
58ff21:	5f                   	pop    %edi
58ff22:	83 c4 0c             	add    $0xc,%esp
58ff25:	c3                   	ret
58ff26:	cc                   	int3
58ff27:	cc                   	int3
58ff28:	cc                   	int3
58ff29:	cc                   	int3
58ff2a:	cc                   	int3
58ff2b:	cc                   	int3
58ff2c:	cc                   	int3
58ff2d:	cc                   	int3
58ff2e:	cc                   	int3
58ff2f:	cc                   	int3
58ff30:	56                   	push   %esi
58ff31:	8b 74 24 0c          	mov    0xc(%esp),%esi
58ff35:	57                   	push   %edi
58ff36:	33 ff                	xor    %edi,%edi
58ff38:	85 f6                	test   %esi,%esi
58ff3a:	74 7f                	je     0x58ffbb
58ff3c:	39 be 48 01 00 00    	cmp    %edi,0x148(%esi)
58ff42:	74 77                	je     0x58ffbb
58ff44:	53                   	push   %ebx
58ff45:	8b 5c 24 10          	mov    0x10(%esp),%ebx
58ff49:	55                   	push   %ebp
58ff4a:	ff b3 18 02 00 00    	push   0x218(%ebx)
58ff50:	e8 6b 20 f5 ff       	call   0x4e1fc0
58ff55:	56                   	push   %esi
58ff56:	ff 73 14             	push   0x14(%ebx)
58ff59:	e8 92 3f f5 ff       	call   0x4e3ef0
58ff5e:	8b e8                	mov    %eax,%ebp
58ff60:	83 c4 0c             	add    $0xc,%esp
58ff63:	85 ed                	test   %ebp,%ebp
58ff65:	74 1a                	je     0x58ff81
58ff67:	55                   	push   %ebp
58ff68:	ff 73 14             	push   0x14(%ebx)
58ff6b:	bf 01 00 00 00       	mov    $0x1,%edi
58ff70:	e8 3b 3b f5 ff       	call   0x4e3ab0
58ff75:	8b e8                	mov    %eax,%ebp
58ff77:	55                   	push   %ebp
58ff78:	53                   	push   %ebx
58ff79:	e8 c2 01 00 00       	call   0x590140
58ff7e:	83 c4 10             	add    $0x10,%esp
58ff81:	c7 86 98 01 00 00 01 	movl   $0x1,0x198(%esi)
58ff88:	00 00 00
58ff8b:	ff b3 18 02 00 00    	push   0x218(%ebx)
58ff91:	e8 aa 20 f5 ff       	call   0x4e2040
58ff96:	8b 43 30             	mov    0x30(%ebx),%eax
58ff99:	83 c4 04             	add    $0x4,%esp
58ff9c:	85 c0                	test   %eax,%eax
58ff9e:	74 07                	je     0x58ffa7
58ffa0:	56                   	push   %esi
58ffa1:	53                   	push   %ebx
58ffa2:	ff d0                	call   *%eax
58ffa4:	83 c4 08             	add    $0x8,%esp
58ffa7:	85 ff                	test   %edi,%edi
58ffa9:	74 09                	je     0x58ffb4
58ffab:	55                   	push   %ebp
58ffac:	e8 0f 00 00 00       	call   0x58ffc0
58ffb1:	83 c4 04             	add    $0x4,%esp
58ffb4:	5d                   	pop    %ebp
58ffb5:	5b                   	pop    %ebx
58ffb6:	8b c7                	mov    %edi,%eax
58ffb8:	5f                   	pop    %edi
58ffb9:	5e                   	pop    %esi
58ffba:	c3                   	ret
58ffbb:	5f                   	pop    %edi
58ffbc:	33 c0                	xor    %eax,%eax
58ffbe:	5e                   	pop    %esi
58ffbf:	c3                   	ret
58ffc0:	56                   	push   %esi
58ffc1:	8b 74 24 08          	mov    0x8(%esp),%esi
58ffc5:	85 f6                	test   %esi,%esi
58ffc7:	0f 84 18 01 00 00    	je     0x5900e5
58ffcd:	83 c9 ff             	or     $0xffffffff,%ecx
58ffd0:	8d 86 ac 01 00 00    	lea    0x1ac(%esi),%eax
58ffd6:	f0 0f c1 08          	lock xadd %ecx,(%eax)
58ffda:	49                   	dec    %ecx
58ffdb:	85 c9                	test   %ecx,%ecx
58ffdd:	0f 8f 02 01 00 00    	jg     0x5900e5
58ffe3:	8d 86 c4 01 00 00    	lea    0x1c4(%esi),%eax
58ffe9:	50                   	push   %eax
58ffea:	56                   	push   %esi
58ffeb:	6a 02                	push   $0x2
58ffed:	e8 fe 00 f5 ff       	call   0x4e00f0
58fff2:	8d 46 48             	lea    0x48(%esi),%eax
58fff5:	68 00 01 00 00       	push   $0x100
58fffa:	50                   	push   %eax
58fffb:	e8 e0 19 e7 ff       	call   0x4019e0
590000:	8d 86 4c 01 00 00    	lea    0x14c(%esi),%eax
590006:	6a 20                	push   $0x20
590008:	50                   	push   %eax
590009:	e8 d2 19 e7 ff       	call   0x4019e0
59000e:	ff b6 9c 01 00 00    	push   0x19c(%esi)
590014:	e8 c7 71 fc ff       	call   0x5571e0
590019:	68 e0 71 55 00       	push   $0x5571e0
59001e:	ff b6 a4 01 00 00    	push   0x1a4(%esi)
590024:	e8 c7 50 f5 ff       	call   0x4e50f0
590029:	68 fd 02 00 00       	push   $0x2fd
59002e:	68 5c 6f 66 00       	push   $0x666f5c
590033:	ff b6 d0 01 00 00    	push   0x1d0(%esi)
590039:	e8 42 07 f5 ff       	call   0x4e0780
59003e:	68 fe 02 00 00       	push   $0x2fe
590043:	68 5c 6f 66 00       	push   $0x666f5c
590048:	ff b6 d4 01 00 00    	push   0x1d4(%esi)
59004e:	e8 2d 07 f5 ff       	call   0x4e0780
590053:	83 c4 40             	add    $0x40,%esp
590056:	68 00 03 00 00       	push   $0x300
59005b:	68 5c 6f 66 00       	push   $0x666f5c
590060:	ff b6 90 01 00 00    	push   0x190(%esi)
590066:	e8 15 07 f5 ff       	call   0x4e0780
59006b:	68 01 03 00 00       	push   $0x301
590070:	68 5c 6f 66 00       	push   $0x666f5c
590075:	ff b6 94 01 00 00    	push   0x194(%esi)
59007b:	e8 00 07 f5 ff       	call   0x4e0780
590080:	68 04 03 00 00       	push   $0x304
590085:	68 5c 6f 66 00       	push   $0x666f5c
59008a:	ff b6 f4 01 00 00    	push   0x1f4(%esi)
590090:	e8 eb 06 f5 ff       	call   0x4e0780
590095:	68 06 03 00 00       	push   $0x306
59009a:	68 5c 6f 66 00       	push   $0x666f5c
59009f:	ff b6 e8 01 00 00    	push   0x1e8(%esi)
5900a5:	e8 d6 06 f5 ff       	call   0x4e0780
5900aa:	68 07 03 00 00       	push   $0x307
5900af:	68 5c 6f 66 00       	push   $0x666f5c
5900b4:	ff b6 f8 01 00 00    	push   0x1f8(%esi)
5900ba:	e8 c1 06 f5 ff       	call   0x4e0780
5900bf:	ff b6 04 02 00 00    	push   0x204(%esi)
5900c5:	e8 86 1e f5 ff       	call   0x4e1f50
5900ca:	83 c4 40             	add    $0x40,%esp
5900cd:	68 09 03 00 00       	push   $0x309
5900d2:	68 5c 6f 66 00       	push   $0x666f5c
5900d7:	68 08 02 00 00       	push   $0x208
5900dc:	56                   	push   %esi
5900dd:	e8 5e 07 f5 ff       	call   0x4e0840
5900e2:	83 c4 10             	add    $0x10,%esp
5900e5:	5e                   	pop    %esi
5900e6:	c3                   	ret
5900e7:	cc                   	int3
5900e8:	cc                   	int3
5900e9:	cc                   	int3
5900ea:	cc                   	int3
5900eb:	cc                   	int3
5900ec:	cc                   	int3
5900ed:	cc                   	int3
5900ee:	cc                   	int3
5900ef:	cc                   	int3
5900f0:	8b 44 24 04          	mov    0x4(%esp),%eax
5900f4:	8b 80 bc 01 00 00    	mov    0x1bc(%eax),%eax
5900fa:	c3                   	ret
5900fb:	cc                   	int3
5900fc:	cc                   	int3
5900fd:	cc                   	int3
5900fe:	cc                   	int3
5900ff:	cc                   	int3
590100:	8b 44 24 04          	mov    0x4(%esp),%eax
590104:	85 c0                	test   %eax,%eax
590106:	75 01                	jne    0x590109
590108:	c3                   	ret
590109:	8b 80 b4 01 00 00    	mov    0x1b4(%eax),%eax
59010f:	c3                   	ret
590110:	8b 44 24 04          	mov    0x4(%esp),%eax
590114:	83 b8 98 01 00 00 00 	cmpl   $0x0,0x198(%eax)
59011b:	75 18                	jne    0x590135
59011d:	83 b8 48 01 00 00 00 	cmpl   $0x0,0x148(%eax)
590124:	77 09                	ja     0x59012f
590126:	83 b8 d8 01 00 00 00 	cmpl   $0x0,0x1d8(%eax)
59012d:	76 06                	jbe    0x590135
59012f:	b8 01 00 00 00       	mov    $0x1,%eax
590134:	c3                   	ret
590135:	33 c0                	xor    %eax,%eax
590137:	c3                   	ret
590138:	cc                   	int3
590139:	cc                   	int3
59013a:	cc                   	int3
59013b:	cc                   	int3
59013c:	cc                   	int3
59013d:	cc                   	int3
59013e:	cc                   	int3
59013f:	cc                   	int3
590140:	8b 54 24 08          	mov    0x8(%esp),%edx
590144:	57                   	push   %edi
590145:	8b ba cc 01 00 00    	mov    0x1cc(%edx),%edi
59014b:	85 ff                	test   %edi,%edi
59014d:	74 7e                	je     0x5901cd
59014f:	56                   	push   %esi
590150:	8b b2 c8 01 00 00    	mov    0x1c8(%edx),%esi
590156:	85 f6                	test   %esi,%esi
590158:	74 72                	je     0x5901cc
59015a:	8b 44 24 0c          	mov    0xc(%esp),%eax
59015e:	53                   	push   %ebx
59015f:	8d 58 20             	lea    0x20(%eax),%ebx
590162:	8d 48 1c             	lea    0x1c(%eax),%ecx
590165:	3b fb                	cmp    %ebx,%edi
590167:	75 22                	jne    0x59018b
590169:	3b f1                	cmp    %ecx,%esi
59016b:	75 0e                	jne    0x59017b
59016d:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
590173:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
590179:	eb 3c                	jmp    0x5901b7
59017b:	89 33                	mov    %esi,(%ebx)
59017d:	8b 82 c8 01 00 00    	mov    0x1c8(%edx),%eax
590183:	89 98 cc 01 00 00    	mov    %ebx,0x1cc(%eax)
590189:	eb 2c                	jmp    0x5901b7
59018b:	3b f1                	cmp    %ecx,%esi
59018d:	75 10                	jne    0x59019f
59018f:	89 39                	mov    %edi,(%ecx)
590191:	8b 82 cc 01 00 00    	mov    0x1cc(%edx),%eax