5e02cb:	5d                   	pop    %ebp
5e02cc:	c3                   	ret
5e02cd:	8b ff                	mov    %edi,%edi
5e02cf:	55                   	push   %ebp
5e02d0:	8b ec                	mov    %esp,%ebp
5e02d2:	8b 4d 08             	mov    0x8(%ebp),%ecx
5e02d5:	53                   	push   %ebx
5e02d6:	56                   	push   %esi
5e02d7:	57                   	push   %edi
5e02d8:	8d 71 0c             	lea    0xc(%ecx),%esi
5e02db:	8b 16                	mov    (%esi),%edx
5e02dd:	90                   	nop
5e02de:	8b c2                	mov    %edx,%eax
5e02e0:	24 03                	and    $0x3,%al
5e02e2:	3c 02                	cmp    $0x2,%al
5e02e4:	75 49                	jne    0x5e032f
5e02e6:	f6 c2 c0             	test   $0xc0,%dl
5e02e9:	74 44                	je     0x5e032f
5e02eb:	8b 39                	mov    (%ecx),%edi
5e02ed:	8b 59 04             	mov    0x4(%ecx),%ebx
5e02f0:	2b fb                	sub    %ebx,%edi
5e02f2:	89 19                	mov    %ebx,(%ecx)
5e02f4:	83 61 08 00          	andl   $0x0,0x8(%ecx)
5e02f8:	85 ff                	test   %edi,%edi
5e02fa:	7e 33                	jle    0x5e032f
5e02fc:	51                   	push   %ecx
5e02fd:	e8 19 5a 00 00       	call   0x5e5d1b
5e0302:	ff 75 0c             	push   0xc(%ebp)
5e0305:	57                   	push   %edi
5e0306:	53                   	push   %ebx
5e0307:	50                   	push   %eax
5e0308:	e8 b5 42 00 00       	call   0x5e45c2
5e030d:	83 c4 14             	add    $0x14,%esp
5e0310:	3b f8                	cmp    %eax,%edi
5e0312:	74 0b                	je     0x5e031f
5e0314:	6a 10                	push   $0x10
5e0316:	58                   	pop    %eax
5e0317:	f0 09 06             	lock or %eax,(%esi)
5e031a:	83 c8 ff             	or     $0xffffffff,%eax
5e031d:	eb 12                	jmp    0x5e0331
5e031f:	8b 06                	mov    (%esi),%eax
5e0321:	90                   	nop
5e0322:	c1 e8 02             	shr    $0x2,%eax
5e0325:	a8 01                	test   $0x1,%al
5e0327:	74 06                	je     0x5e032f
5e0329:	6a fd                	push   $0xfffffffd
5e032b:	58                   	pop    %eax
5e032c:	f0 21 06             	lock and %eax,(%esi)
5e032f:	33 c0                	xor    %eax,%eax
5e0331:	5f                   	pop    %edi
5e0332:	5e                   	pop    %esi
5e0333:	5b                   	pop    %ebx
5e0334:	5d                   	pop    %ebp
5e0335:	c3                   	ret
5e0336:	8b ff                	mov    %edi,%edi
5e0338:	55                   	push   %ebp
5e0339:	8b ec                	mov    %esp,%ebp
5e033b:	83 ec 28             	sub    $0x28,%esp
5e033e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
5e0341:	56                   	push   %esi
5e0342:	57                   	push   %edi
5e0343:	33 f6                	xor    %esi,%esi
5e0345:	56                   	push   %esi
5e0346:	e8 89 5b ff ff       	call   0x5d5ed4
5e034b:	8b 7d 08             	mov    0x8(%ebp),%edi
5e034e:	85 ff                	test   %edi,%edi
5e0350:	75 0b                	jne    0x5e035d
5e0352:	56                   	push   %esi
5e0353:	e8 d4 fe ff ff       	call   0x5e022c
5e0358:	59                   	pop    %ecx
5e0359:	8b f0                	mov    %eax,%esi
5e035b:	eb 30                	jmp    0x5e038d
5e035d:	8d 45 d8             	lea    -0x28(%ebp),%eax
5e0360:	50                   	push   %eax
5e0361:	57                   	push   %edi
5e0362:	e8 66 ff ff ff       	call   0x5e02cd
5e0367:	59                   	pop    %ecx
5e0368:	59                   	pop    %ecx
5e0369:	85 c0                	test   %eax,%eax
5e036b:	75 1d                	jne    0x5e038a
5e036d:	8b 47 0c             	mov    0xc(%edi),%eax
5e0370:	90                   	nop
5e0371:	c1 e8 0b             	shr    $0xb,%eax
5e0374:	a8 01                	test   $0x1,%al
5e0376:	74 15                	je     0x5e038d
5e0378:	57                   	push   %edi
5e0379:	e8 9d 59 00 00       	call   0x5e5d1b
5e037e:	50                   	push   %eax
5e037f:	e8 98 d9 00 00       	call   0x5edd1c
5e0384:	59                   	pop    %ecx
5e0385:	59                   	pop    %ecx
5e0386:	85 c0                	test   %eax,%eax
5e0388:	74 03                	je     0x5e038d
5e038a:	83 ce ff             	or     $0xffffffff,%esi
5e038d:	8d 4d d8             	lea    -0x28(%ebp),%ecx
5e0390:	e8 87 5b ff ff       	call   0x5d5f1c
5e0395:	5f                   	pop    %edi
5e0396:	8b c6                	mov    %esi,%eax
5e0398:	5e                   	pop    %esi
5e0399:	c9                   	leave
5e039a:	c3                   	ret
5e039b:	6a 01                	push   $0x1
5e039d:	e8 8a fe ff ff       	call   0x5e022c
5e03a2:	59                   	pop    %ecx
5e03a3:	c3                   	ret
5e03a4:	8b ff                	mov    %edi,%edi
5e03a6:	55                   	push   %ebp
5e03a7:	8b ec                	mov    %esp,%ebp
5e03a9:	83 ec 14             	sub    $0x14,%esp
5e03ac:	8b 45 08             	mov    0x8(%ebp),%eax
5e03af:	89 45 f8             	mov    %eax,-0x8(%ebp)
5e03b2:	85 c0                	test   %eax,%eax
5e03b4:	75 09                	jne    0x5e03bf
5e03b6:	50                   	push   %eax
5e03b7:	e8 70 fe ff ff       	call   0x5e022c
5e03bc:	59                   	pop    %ecx
5e03bd:	c9                   	leave
5e03be:	c3                   	ret
5e03bf:	8b 40 0c             	mov    0xc(%eax),%eax
5e03c2:	90                   	nop
5e03c3:	50                   	push   %eax
5e03c4:	e8 e1 fe ff ff       	call   0x5e02aa
5e03c9:	59                   	pop    %ecx
5e03ca:	84 c0                	test   %al,%al
5e03cc:	75 04                	jne    0x5e03d2
5e03ce:	33 c0                	xor    %eax,%eax
5e03d0:	c9                   	leave
5e03d1:	c3                   	ret
5e03d2:	8d 45 f8             	lea    -0x8(%ebp),%eax
5e03d5:	89 45 f0             	mov    %eax,-0x10(%ebp)
5e03d8:	8d 4d ff             	lea    -0x1(%ebp),%ecx
5e03db:	8b 45 f8             	mov    -0x8(%ebp),%eax
5e03de:	89 45 f4             	mov    %eax,-0xc(%ebp)
5e03e1:	89 45 ec             	mov    %eax,-0x14(%ebp)
5e03e4:	8d 45 f4             	lea    -0xc(%ebp),%eax
5e03e7:	50                   	push   %eax
5e03e8:	8d 45 f0             	lea    -0x10(%ebp),%eax
5e03eb:	50                   	push   %eax
5e03ec:	8d 45 ec             	lea    -0x14(%ebp),%eax
5e03ef:	50                   	push   %eax
5e03f0:	e8 d7 fd ff ff       	call   0x5e01cc
5e03f5:	c9                   	leave
5e03f6:	c3                   	ret
5e03f7:	8b ff                	mov    %edi,%edi
5e03f9:	55                   	push   %ebp
5e03fa:	8b ec                	mov    %esp,%ebp
5e03fc:	83 ec 14             	sub    $0x14,%esp
5e03ff:	8d 4d 0c             	lea    0xc(%ebp),%ecx
5e0402:	53                   	push   %ebx
5e0403:	56                   	push   %esi
5e0404:	e8 d2 a3 ff ff       	call   0x5da7db
5e0409:	84 c0                	test   %al,%al
5e040b:	74 2f                	je     0x5e043c
5e040d:	8b 75 14             	mov    0x14(%ebp),%esi
5e0410:	85 f6                	test   %esi,%esi
5e0412:	74 3d                	je     0x5e0451
5e0414:	83 fe 02             	cmp    $0x2,%esi
5e0417:	7c 05                	jl     0x5e041e
5e0419:	83 fe 24             	cmp    $0x24,%esi
5e041c:	7e 33                	jle    0x5e0451
5e041e:	8b 45 08             	mov    0x8(%ebp),%eax
5e0421:	50                   	push   %eax
5e0422:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
5e0426:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
5e042d:	33 c0                	xor    %eax,%eax
5e042f:	50                   	push   %eax
5e0430:	50                   	push   %eax
5e0431:	50                   	push   %eax
5e0432:	50                   	push   %eax
5e0433:	50                   	push   %eax
5e0434:	e8 2a 5d ff ff       	call   0x5d6163
5e0439:	83 c4 18             	add    $0x18,%esp
5e043c:	8b 4d 10             	mov    0x10(%ebp),%ecx
5e043f:	85 c9                	test   %ecx,%ecx
5e0441:	0f 84 8a 01 00 00    	je     0x5e05d1
5e0447:	8b 45 0c             	mov    0xc(%ebp),%eax
5e044a:	89 01                	mov    %eax,(%ecx)
5e044c:	e9 80 01 00 00       	jmp    0x5e05d1
5e0451:	8b 45 0c             	mov    0xc(%ebp),%eax
5e0454:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
5e0458:	57                   	push   %edi
5e0459:	8b 7d 08             	mov    0x8(%ebp),%edi
5e045c:	8a 18                	mov    (%eax),%bl
5e045e:	89 45 ec             	mov    %eax,-0x14(%ebp)
5e0461:	40                   	inc    %eax
5e0462:	88 5d fc             	mov    %bl,-0x4(%ebp)
5e0465:	80 7f 14 00          	cmpb   $0x0,0x14(%edi)
5e0469:	89 45 0c             	mov    %eax,0xc(%ebp)
5e046c:	75 07                	jne    0x5e0475
5e046e:	8b cf                	mov    %edi,%ecx
5e0470:	e8 0b a3 ff ff       	call   0x5da780
5e0475:	83 c7 0c             	add    $0xc,%edi
5e0478:	eb 0c                	jmp    0x5e0486
5e047a:	8b 45 0c             	mov    0xc(%ebp),%eax
5e047d:	8a 18                	mov    (%eax),%bl
5e047f:	40                   	inc    %eax
5e0480:	88 5d fc             	mov    %bl,-0x4(%ebp)
5e0483:	89 45 0c             	mov    %eax,0xc(%ebp)
5e0486:	57                   	push   %edi
5e0487:	0f b6 c3             	movzbl %bl,%eax
5e048a:	6a 08                	push   $0x8
5e048c:	50                   	push   %eax
5e048d:	e8 a0 f4 ff ff       	call   0x5df932
5e0492:	83 c4 0c             	add    $0xc,%esp
5e0495:	85 c0                	test   %eax,%eax
5e0497:	75 e1                	jne    0x5e047a
5e0499:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
5e049d:	89 45 f8             	mov    %eax,-0x8(%ebp)
5e04a0:	80 fb 2d             	cmp    $0x2d,%bl
5e04a3:	75 08                	jne    0x5e04ad
5e04a5:	83 c8 02             	or     $0x2,%eax
5e04a8:	89 45 f8             	mov    %eax,-0x8(%ebp)
5e04ab:	eb 05                	jmp    0x5e04b2
5e04ad:	80 fb 2b             	cmp    $0x2b,%bl
5e04b0:	75 0e                	jne    0x5e04c0
5e04b2:	8b 7d 0c             	mov    0xc(%ebp),%edi
5e04b5:	8a 1f                	mov    (%edi),%bl
5e04b7:	47                   	inc    %edi
5e04b8:	88 5d fc             	mov    %bl,-0x4(%ebp)
5e04bb:	89 7d 0c             	mov    %edi,0xc(%ebp)
5e04be:	eb 03                	jmp    0x5e04c3
5e04c0:	8b 7d 0c             	mov    0xc(%ebp),%edi
5e04c3:	85 f6                	test   %esi,%esi
5e04c5:	74 05                	je     0x5e04cc
5e04c7:	83 fe 10             	cmp    $0x10,%esi
5e04ca:	75 73                	jne    0x5e053f
5e04cc:	8a c3                	mov    %bl,%al
5e04ce:	2c 30                	sub    $0x30,%al
5e04d0:	3c 09                	cmp    $0x9,%al
5e04d2:	77 08                	ja     0x5e04dc
5e04d4:	0f be c3             	movsbl %bl,%eax
5e04d7:	83 c0 d0             	add    $0xffffffd0,%eax
5e04da:	eb 1e                	jmp    0x5e04fa
5e04dc:	8a c3                	mov    %bl,%al
5e04de:	2c 61                	sub    $0x61,%al
5e04e0:	3c 19                	cmp    $0x19,%al
5e04e2:	77 08                	ja     0x5e04ec
5e04e4:	0f be c3             	movsbl %bl,%eax
5e04e7:	83 c0 a9             	add    $0xffffffa9,%eax
5e04ea:	eb 0e                	jmp    0x5e04fa
5e04ec:	8a c3                	mov    %bl,%al
5e04ee:	2c 41                	sub    $0x41,%al
5e04f0:	3c 19                	cmp    $0x19,%al
5e04f2:	77 44                	ja     0x5e0538
5e04f4:	0f be c3             	movsbl %bl,%eax
5e04f7:	83 c0 c9             	add    $0xffffffc9,%eax
5e04fa:	85 c0                	test   %eax,%eax
5e04fc:	75 3a                	jne    0x5e0538
5e04fe:	8a 07                	mov    (%edi),%al
5e0500:	47                   	inc    %edi
5e0501:	88 45 f0             	mov    %al,-0x10(%ebp)
5e0504:	89 7d 0c             	mov    %edi,0xc(%ebp)
5e0507:	3c 78                	cmp    $0x78,%al
5e0509:	74 1b                	je     0x5e0526
5e050b:	3c 58                	cmp    $0x58,%al
5e050d:	74 17                	je     0x5e0526
5e050f:	85 f6                	test   %esi,%esi
5e0511:	75 03                	jne    0x5e0516
5e0513:	6a 08                	push   $0x8
5e0515:	5e                   	pop    %esi
5e0516:	ff 75 f0             	push   -0x10(%ebp)
5e0519:	8d 4d 0c             	lea    0xc(%ebp),%ecx
5e051c:	e8 06 a2 ff ff       	call   0x5da727
5e0521:	8b 7d 0c             	mov    0xc(%ebp),%edi
5e0524:	eb 19                	jmp    0x5e053f
5e0526:	85 f6                	test   %esi,%esi
5e0528:	75 03                	jne    0x5e052d
5e052a:	6a 10                	push   $0x10
5e052c:	5e                   	pop    %esi
5e052d:	8a 1f                	mov    (%edi),%bl
5e052f:	47                   	inc    %edi
5e0530:	88 5d fc             	mov    %bl,-0x4(%ebp)
5e0533:	89 7d 0c             	mov    %edi,0xc(%ebp)
5e0536:	eb 07                	jmp    0x5e053f
5e0538:	85 f6                	test   %esi,%esi
5e053a:	75 03                	jne    0x5e053f
5e053c:	6a 0a                	push   $0xa
5e053e:	5e                   	pop    %esi
5e053f:	83 c8 ff             	or     $0xffffffff,%eax
5e0542:	33 d2                	xor    %edx,%edx
5e0544:	f7 f6                	div    %esi
5e0546:	89 45 f0             	mov    %eax,-0x10(%ebp)
5e0549:	8a c3                	mov    %bl,%al
5e054b:	2c 30                	sub    $0x30,%al
5e054d:	3c 09                	cmp    $0x9,%al
5e054f:	77 08                	ja     0x5e0559
5e0551:	0f be cb             	movsbl %bl,%ecx
5e0554:	83 c1 d0             	add    $0xffffffd0,%ecx
5e0557:	eb 23                	jmp    0x5e057c
5e0559:	8a c3                	mov    %bl,%al
5e055b:	2c 61                	sub    $0x61,%al
5e055d:	3c 19                	cmp    $0x19,%al
5e055f:	77 08                	ja     0x5e0569
5e0561:	0f be cb             	movsbl %bl,%ecx
5e0564:	83 c1 a9             	add    $0xffffffa9,%ecx
5e0567:	eb 13                	jmp    0x5e057c
5e0569:	8a c3                	mov    %bl,%al
5e056b:	2c 41                	sub    $0x41,%al
5e056d:	3c 19                	cmp    $0x19,%al
5e056f:	77 08                	ja     0x5e0579
5e0571:	0f be cb             	movsbl %bl,%ecx
5e0574:	83 c1 c9             	add    $0xffffffc9,%ecx
5e0577:	eb 03                	jmp    0x5e057c
5e0579:	83 c9 ff             	or     $0xffffffff,%ecx
5e057c:	3b ce                	cmp    %esi,%ecx
5e057e:	73 31                	jae    0x5e05b1
5e0580:	8b 5d f4             	mov    -0xc(%ebp),%ebx
5e0583:	8b c3                	mov    %ebx,%eax
5e0585:	0f af c6             	imul   %esi,%eax
5e0588:	8d 14 08             	lea    (%eax,%ecx,1),%edx
5e058b:	3b d0                	cmp    %eax,%edx
5e058d:	89 55 f4             	mov    %edx,-0xc(%ebp)
5e0590:	1b c9                	sbb    %ecx,%ecx
5e0592:	f7 d9                	neg    %ecx
5e0594:	39 5d f0             	cmp    %ebx,-0x10(%ebp)
5e0597:	8a 1f                	mov    (%edi),%bl
5e0599:	1b c0                	sbb    %eax,%eax
5e059b:	88 5d fc             	mov    %bl,-0x4(%ebp)
5e059e:	f7 d8                	neg    %eax
5e05a0:	0b c8                	or     %eax,%ecx
5e05a2:	c1 e1 02             	shl    $0x2,%ecx
5e05a5:	83 c9 08             	or     $0x8,%ecx
5e05a8:	09 4d f8             	or     %ecx,-0x8(%ebp)
5e05ab:	47                   	inc    %edi
5e05ac:	89 7d 0c             	mov    %edi,0xc(%ebp)
5e05af:	eb 98                	jmp    0x5e0549
5e05b1:	ff 75 fc             	push   -0x4(%ebp)
5e05b4:	8d 4d 0c             	lea    0xc(%ebp),%ecx
5e05b7:	e8 6b a1 ff ff       	call   0x5da727
5e05bc:	8b 5d f8             	mov    -0x8(%ebp),%ebx
5e05bf:	5f                   	pop    %edi
5e05c0:	f6 c3 08             	test   $0x8,%bl
5e05c3:	75 10                	jne    0x5e05d5
5e05c5:	8b 45 10             	mov    0x10(%ebp),%eax
5e05c8:	85 c0                	test   %eax,%eax
5e05ca:	74 05                	je     0x5e05d1
5e05cc:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5e05cf:	89 08                	mov    %ecx,(%eax)
5e05d1:	33 c0                	xor    %eax,%eax
5e05d3:	eb 65                	jmp    0x5e063a
5e05d5:	8b 75 f4             	mov    -0xc(%ebp),%esi
5e05d8:	56                   	push   %esi
5e05d9:	53                   	push   %ebx
5e05da:	e8 84 66 ff ff       	call   0x5d6c63
5e05df:	59                   	pop    %ecx
5e05e0:	59                   	pop    %ecx
5e05e1:	84 c0                	test   %al,%al
5e05e3:	74 40                	je     0x5e0625
5e05e5:	8b 45 08             	mov    0x8(%ebp),%eax
5e05e8:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)