594217:	83 f9 18             	cmp    $0x18,%ecx
59421a:	75 1b                	jne    0x594237
59421c:	ff 74 24 10          	push   0x10(%esp)
594220:	6a 00                	push   $0x0
594222:	ff 74 24 0c          	push   0xc(%esp)
594226:	ff 74 24 0c          	push   0xc(%esp)
59422a:	50                   	push   %eax
59422b:	e8 a0 c5 00 00       	call   0x5a07d0
594230:	83 c4 14             	add    $0x14,%esp
594233:	83 c4 08             	add    $0x8,%esp
594236:	c3                   	ret
594237:	ff 74 24 10          	push   0x10(%esp)
59423b:	6a 00                	push   $0x0
59423d:	ff 74 24 0c          	push   0xc(%esp)
594241:	ff 74 24 0c          	push   0xc(%esp)
594245:	50                   	push   %eax
594246:	e8 75 fc ff ff       	call   0x593ec0
59424b:	83 c4 14             	add    $0x14,%esp
59424e:	83 c4 08             	add    $0x8,%esp
594251:	c3                   	ret
594252:	cc                   	int3
594253:	cc                   	int3
594254:	cc                   	int3
594255:	cc                   	int3
594256:	cc                   	int3
594257:	cc                   	int3
594258:	cc                   	int3
594259:	cc                   	int3
59425a:	cc                   	int3
59425b:	cc                   	int3
59425c:	cc                   	int3
59425d:	cc                   	int3
59425e:	cc                   	int3
59425f:	cc                   	int3
594260:	56                   	push   %esi
594261:	8b 74 24 0c          	mov    0xc(%esp),%esi
594265:	8b 46 28             	mov    0x28(%esi),%eax
594268:	a8 04                	test   $0x4,%al
59426a:	74 06                	je     0x594272
59426c:	f6 46 30 02          	testb  $0x2,0x30(%esi)
594270:	74 1f                	je     0x594291
594272:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
594277:	74 1c                	je     0x594295
594279:	56                   	push   %esi
59427a:	e8 51 04 00 00       	call   0x5946d0
59427f:	83 c4 04             	add    $0x4,%esp
594282:	85 c0                	test   %eax,%eax
594284:	74 0b                	je     0x594291
594286:	83 f8 05             	cmp    $0x5,%eax
594289:	75 23                	jne    0x5942ae
59428b:	f6 46 34 04          	testb  $0x4,0x34(%esi)
59428f:	75 1d                	jne    0x5942ae
594291:	33 c0                	xor    %eax,%eax
594293:	5e                   	pop    %esi
594294:	c3                   	ret
594295:	a8 02                	test   $0x2,%al
594297:	74 06                	je     0x59429f
594299:	f6 46 2c 88          	testb  $0x88,0x2c(%esi)
59429d:	74 f2                	je     0x594291
59429f:	a8 08                	test   $0x8,%al
5942a1:	74 06                	je     0x5942a9
5942a3:	f6 46 34 80          	testb  $0x80,0x34(%esi)
5942a7:	74 e8                	je     0x594291
5942a9:	b8 01 00 00 00       	mov    $0x1,%eax
5942ae:	5e                   	pop    %esi
5942af:	c3                   	ret
5942b0:	56                   	push   %esi
5942b1:	8b 74 24 0c          	mov    0xc(%esp),%esi
5942b5:	8b 46 28             	mov    0x28(%esi),%eax
5942b8:	a8 04                	test   $0x4,%al
5942ba:	74 06                	je     0x5942c2
5942bc:	f6 46 30 11          	testb  $0x11,0x30(%esi)
5942c0:	74 1f                	je     0x5942e1
5942c2:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
5942c7:	74 1c                	je     0x5942e5
5942c9:	56                   	push   %esi
5942ca:	e8 01 04 00 00       	call   0x5946d0
5942cf:	83 c4 04             	add    $0x4,%esp
5942d2:	85 c0                	test   %eax,%eax
5942d4:	74 0b                	je     0x5942e1
5942d6:	83 f8 05             	cmp    $0x5,%eax
5942d9:	75 23                	jne    0x5942fe
5942db:	f6 46 34 04          	testb  $0x4,0x34(%esi)
5942df:	75 1d                	jne    0x5942fe
5942e1:	33 c0                	xor    %eax,%eax
5942e3:	5e                   	pop    %esi
5942e4:	c3                   	ret
5942e5:	a8 08                	test   $0x8,%al
5942e7:	74 06                	je     0x5942ef
5942e9:	f6 46 34 40          	testb  $0x40,0x34(%esi)
5942ed:	74 f2                	je     0x5942e1
5942ef:	a8 02                	test   $0x2,%al
5942f1:	74 06                	je     0x5942f9
5942f3:	f6 46 2c a8          	testb  $0xa8,0x2c(%esi)
5942f7:	74 e8                	je     0x5942e1
5942f9:	b8 01 00 00 00       	mov    $0x1,%eax
5942fe:	5e                   	pop    %esi
5942ff:	c3                   	ret
594300:	56                   	push   %esi
594301:	8b 74 24 0c          	mov    0xc(%esp),%esi
594305:	8b 46 28             	mov    0x28(%esi),%eax
594308:	a8 04                	test   $0x4,%al
59430a:	74 06                	je     0x594312
59430c:	f6 46 30 11          	testb  $0x11,0x30(%esi)
594310:	74 42                	je     0x594354
594312:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
594317:	74 1c                	je     0x594335
594319:	56                   	push   %esi
59431a:	e8 b1 03 00 00       	call   0x5946d0
59431f:	83 c4 04             	add    $0x4,%esp
594322:	85 c0                	test   %eax,%eax
594324:	74 2e                	je     0x594354
594326:	83 f8 05             	cmp    $0x5,%eax
594329:	75 32                	jne    0x59435d
59432b:	f6 46 34 04          	testb  $0x4,0x34(%esi)
59432f:	75 2c                	jne    0x59435d
594331:	33 c0                	xor    %eax,%eax
594333:	5e                   	pop    %esi
594334:	c3                   	ret
594335:	a8 08                	test   $0x8,%al
594337:	74 06                	je     0x59433f
594339:	f6 46 34 40          	testb  $0x40,0x34(%esi)
59433d:	74 15                	je     0x594354
59433f:	83 e0 02             	and    $0x2,%eax
594342:	74 06                	je     0x59434a
594344:	f6 46 2c a8          	testb  $0xa8,0x2c(%esi)
594348:	74 0a                	je     0x594354
59434a:	85 c0                	test   %eax,%eax
59434c:	74 0a                	je     0x594358
59434e:	f6 46 2c 20          	testb  $0x20,0x2c(%esi)
594352:	75 04                	jne    0x594358
594354:	33 c0                	xor    %eax,%eax
594356:	5e                   	pop    %esi
594357:	c3                   	ret
594358:	b8 01 00 00 00       	mov    $0x1,%eax
59435d:	5e                   	pop    %esi
59435e:	c3                   	ret
59435f:	cc                   	int3
594360:	56                   	push   %esi
594361:	8b 74 24 0c          	mov    0xc(%esp),%esi
594365:	8b 46 28             	mov    0x28(%esi),%eax
594368:	a8 04                	test   $0x4,%al
59436a:	74 06                	je     0x594372
59436c:	f6 46 30 04          	testb  $0x4,0x30(%esi)
594370:	74 49                	je     0x5943bb
594372:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
594377:	74 1c                	je     0x594395
594379:	56                   	push   %esi
59437a:	e8 51 03 00 00       	call   0x5946d0
59437f:	83 c4 04             	add    $0x4,%esp
594382:	85 c0                	test   %eax,%eax
594384:	74 35                	je     0x5943bb
594386:	83 f8 05             	cmp    $0x5,%eax
594389:	75 36                	jne    0x5943c1
59438b:	f6 46 34 02          	testb  $0x2,0x34(%esi)
59438f:	75 30                	jne    0x5943c1
594391:	33 c0                	xor    %eax,%eax
594393:	5e                   	pop    %esi
594394:	c3                   	ret
594395:	a8 08                	test   $0x8,%al
594397:	74 13                	je     0x5943ac
594399:	8b 4e 34             	mov    0x34(%esi),%ecx
59439c:	f6 c1 20             	test   $0x20,%cl
59439f:	75 0b                	jne    0x5943ac
5943a1:	84 c9                	test   %cl,%cl
5943a3:	79 16                	jns    0x5943bb
5943a5:	b9 02 00 00 00       	mov    $0x2,%ecx
5943aa:	eb 05                	jmp    0x5943b1
5943ac:	b9 01 00 00 00       	mov    $0x1,%ecx
5943b1:	a8 02                	test   $0x2,%al
5943b3:	74 0a                	je     0x5943bf
5943b5:	f6 46 2c c0          	testb  $0xc0,0x2c(%esi)
5943b9:	75 04                	jne    0x5943bf
5943bb:	33 c0                	xor    %eax,%eax
5943bd:	5e                   	pop    %esi
5943be:	c3                   	ret
5943bf:	8b c1                	mov    %ecx,%eax
5943c1:	5e                   	pop    %esi
5943c2:	c3                   	ret
5943c3:	cc                   	int3
5943c4:	cc                   	int3
5943c5:	cc                   	int3
5943c6:	cc                   	int3
5943c7:	cc                   	int3
5943c8:	cc                   	int3
5943c9:	cc                   	int3
5943ca:	cc                   	int3
5943cb:	cc                   	int3
5943cc:	cc                   	int3
5943cd:	cc                   	int3
5943ce:	cc                   	int3
5943cf:	cc                   	int3
5943d0:	56                   	push   %esi
5943d1:	8b 74 24 0c          	mov    0xc(%esp),%esi
5943d5:	8b 46 28             	mov    0x28(%esi),%eax
5943d8:	a8 04                	test   $0x4,%al
5943da:	74 06                	je     0x5943e2
5943dc:	f6 46 30 04          	testb  $0x4,0x30(%esi)
5943e0:	74 49                	je     0x59442b
5943e2:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
5943e7:	74 1c                	je     0x594405
5943e9:	56                   	push   %esi
5943ea:	e8 e1 02 00 00       	call   0x5946d0
5943ef:	83 c4 04             	add    $0x4,%esp
5943f2:	85 c0                	test   %eax,%eax
5943f4:	74 35                	je     0x59442b
5943f6:	83 f8 05             	cmp    $0x5,%eax
5943f9:	75 36                	jne    0x594431
5943fb:	f6 46 34 02          	testb  $0x2,0x34(%esi)
5943ff:	75 30                	jne    0x594431
594401:	33 c0                	xor    %eax,%eax
594403:	5e                   	pop    %esi
594404:	c3                   	ret
594405:	a8 08                	test   $0x8,%al
594407:	74 13                	je     0x59441c
594409:	8b 4e 34             	mov    0x34(%esi),%ecx
59440c:	f6 c1 20             	test   $0x20,%cl
59440f:	75 0b                	jne    0x59441c
594411:	84 c9                	test   %cl,%cl
594413:	79 16                	jns    0x59442b
594415:	b9 02 00 00 00       	mov    $0x2,%ecx
59441a:	eb 05                	jmp    0x594421
59441c:	b9 01 00 00 00       	mov    $0x1,%ecx
594421:	a8 02                	test   $0x2,%al
594423:	74 0a                	je     0x59442f
594425:	f6 46 2c 20          	testb  $0x20,0x2c(%esi)
594429:	75 04                	jne    0x59442f
59442b:	33 c0                	xor    %eax,%eax
59442d:	5e                   	pop    %esi
59442e:	c3                   	ret
59442f:	8b c1                	mov    %ecx,%eax
594431:	5e                   	pop    %esi
594432:	c3                   	ret
594433:	cc                   	int3
594434:	cc                   	int3
594435:	cc                   	int3
594436:	cc                   	int3
594437:	cc                   	int3
594438:	cc                   	int3
594439:	cc                   	int3
59443a:	cc                   	int3
59443b:	cc                   	int3
59443c:	cc                   	int3
59443d:	cc                   	int3
59443e:	cc                   	int3
59443f:	cc                   	int3
594440:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
594445:	74 17                	je     0x59445e
594447:	ff 74 24 08          	push   0x8(%esp)
59444b:	e8 80 02 00 00       	call   0x5946d0
594450:	33 c9                	xor    %ecx,%ecx
594452:	83 c4 04             	add    $0x4,%esp
594455:	83 f8 02             	cmp    $0x2,%eax
594458:	0f 45 c8             	cmovne %eax,%ecx
59445b:	8b c1                	mov    %ecx,%eax
59445d:	c3                   	ret
59445e:	8b 44 24 08          	mov    0x8(%esp),%eax
594462:	f6 40 28 02          	testb  $0x2,0x28(%eax)
594466:	74 09                	je     0x594471
594468:	f6 40 2c 02          	testb  $0x2,0x2c(%eax)
59446c:	75 03                	jne    0x594471
59446e:	33 c0                	xor    %eax,%eax
594470:	c3                   	ret
594471:	b8 01 00 00 00       	mov    $0x1,%eax
594476:	c3                   	ret
594477:	cc                   	int3
594478:	cc                   	int3
594479:	cc                   	int3
59447a:	cc                   	int3
59447b:	cc                   	int3
59447c:	cc                   	int3
59447d:	cc                   	int3
59447e:	cc                   	int3
59447f:	cc                   	int3
594480:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
594485:	74 0d                	je     0x594494
594487:	ff 74 24 08          	push   0x8(%esp)
59448b:	e8 40 02 00 00       	call   0x5946d0
594490:	83 c4 04             	add    $0x4,%esp
594493:	c3                   	ret
594494:	56                   	push   %esi
594495:	8b 74 24 0c          	mov    0xc(%esp),%esi
594499:	8b 46 28             	mov    0x28(%esi),%eax
59449c:	a8 02                	test   $0x2,%al
59449e:	74 10                	je     0x5944b0
5944a0:	8b 4e 2c             	mov    0x2c(%esi),%ecx
5944a3:	f7 c1 3f ff ff ff    	test   $0xffffff3f,%ecx
5944a9:	75 3b                	jne    0x5944e6
5944ab:	f6 c1 c0             	test   $0xc0,%cl
5944ae:	74 36                	je     0x5944e6
5944b0:	a8 04                	test   $0x4,%al
5944b2:	74 32                	je     0x5944e6
5944b4:	83 7e 30 40          	cmpl   $0x40,0x30(%esi)
5944b8:	75 2c                	jne    0x5944e6
5944ba:	6a ff                	push   $0xffffffff
5944bc:	6a 7e                	push   $0x7e
5944be:	56                   	push   %esi
5944bf:	e8 6c 98 ff ff       	call   0x58dd30
5944c4:	83 c4 0c             	add    $0xc,%esp
5944c7:	85 c0                	test   %eax,%eax
5944c9:	78 14                	js     0x5944df
5944cb:	50                   	push   %eax
5944cc:	56                   	push   %esi
5944cd:	e8 3e 98 ff ff       	call   0x58dd10
5944d2:	50                   	push   %eax
5944d3:	e8 58 22 00 00       	call   0x596730
5944d8:	83 c4 0c             	add    $0xc,%esp
5944db:	85 c0                	test   %eax,%eax
5944dd:	74 07                	je     0x5944e6
5944df:	b8 01 00 00 00       	mov    $0x1,%eax
5944e4:	5e                   	pop    %esi
5944e5:	c3                   	ret
5944e6:	33 c0                	xor    %eax,%eax
5944e8:	5e                   	pop    %esi
5944e9:	c3                   	ret
5944ea:	cc                   	int3
5944eb:	cc                   	int3
5944ec:	cc                   	int3
5944ed:	cc                   	int3
5944ee:	cc                   	int3
5944ef:	cc                   	int3
5944f0:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
5944f5:	74 0d                	je     0x594504
5944f7:	ff 74 24 08          	push   0x8(%esp)
5944fb:	e8 d0 01 00 00       	call   0x5946d0
594500:	83 c4 04             	add    $0x4,%esp
594503:	c3                   	ret
594504:	b8 01 00 00 00       	mov    $0x1,%eax
594509:	c3                   	ret
59450a:	cc                   	int3
59450b:	cc                   	int3
59450c:	cc                   	int3
59450d:	cc                   	int3
59450e:	cc                   	int3
59450f:	cc                   	int3
594510:	57                   	push   %edi
594511:	8b 7c 24 0c          	mov    0xc(%esp),%edi
594515:	85 ff                	test   %edi,%edi
594517:	75 04                	jne    0x59451d
594519:	33 c0                	xor    %eax,%eax
59451b:	5f                   	pop    %edi
59451c:	c3                   	ret
59451d:	8b 07                	mov    (%edi),%eax
59451f:	53                   	push   %ebx
594520:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
594524:	85 c0                	test   %eax,%eax
594526:	74 1d                	je     0x594545
594528:	8b 4b 38             	mov    0x38(%ebx),%ecx
59452b:	85 c9                	test   %ecx,%ecx
59452d:	74 16                	je     0x594545