406112:	55                   	push   %ebp
406113:	8b ec                	mov    %esp,%ebp
406115:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
406119:	56                   	push   %esi
40611a:	8b f1                	mov    %ecx,%esi
40611c:	c7 06 e0 15 40 00    	movl   $0x4015e0,(%esi)
406122:	74 08                	je     0x40612c
406124:	56                   	push   %esi
406125:	ff 15 e4 21 41 00    	call   *0x4121e4
40612b:	59                   	pop    %ecx
40612c:	8b c6                	mov    %esi,%eax
40612e:	5e                   	pop    %esi
40612f:	5d                   	pop    %ebp
406130:	c2 04 00             	ret    $0x4
406133:	8b ff                	mov    %edi,%edi
406135:	53                   	push   %ebx
406136:	57                   	push   %edi
406137:	8b f9                	mov    %ecx,%edi
406139:	83 cb ff             	or     $0xffffffff,%ebx
40613c:	f0 0f c1 5f 04       	lock xadd %ebx,0x4(%edi)
406141:	4b                   	dec    %ebx
406142:	75 18                	jne    0x40615c
406144:	85 ff                	test   %edi,%edi
406146:	74 14                	je     0x40615c
406148:	8b 0f                	mov    (%edi),%ecx
40614a:	56                   	push   %esi
40614b:	6a 01                	push   $0x1
40614d:	8b 31                	mov    (%ecx),%esi
40614f:	8b ce                	mov    %esi,%ecx
406151:	ff 15 10 22 41 00    	call   *0x412210
406157:	8b cf                	mov    %edi,%ecx
406159:	ff d6                	call   *%esi
40615b:	5e                   	pop    %esi
40615c:	5f                   	pop    %edi
40615d:	8b c3                	mov    %ebx,%eax
40615f:	5b                   	pop    %ebx
406160:	c3                   	ret
406161:	c7 01 e0 15 40 00    	movl   $0x4015e0,(%ecx)
406167:	c3                   	ret
406168:	8b ff                	mov    %edi,%edi
40616a:	55                   	push   %ebp
40616b:	8b ec                	mov    %esp,%ebp
40616d:	8b 55 08             	mov    0x8(%ebp),%edx
406170:	85 d2                	test   %edx,%edx
406172:	74 2c                	je     0x4061a0
406174:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
406178:	72 04                	jb     0x40617e
40617a:	8b 01                	mov    (%ecx),%eax
40617c:	eb 02                	jmp    0x406180
40617e:	8b c1                	mov    %ecx,%eax
406180:	3b d0                	cmp    %eax,%edx
406182:	72 1c                	jb     0x4061a0
406184:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
406188:	56                   	push   %esi
406189:	72 04                	jb     0x40618f
40618b:	8b 31                	mov    (%ecx),%esi
40618d:	eb 02                	jmp    0x406191
40618f:	8b f1                	mov    %ecx,%esi
406191:	8b 41 10             	mov    0x10(%ecx),%eax
406194:	8d 04 46             	lea    (%esi,%eax,2),%eax
406197:	5e                   	pop    %esi
406198:	3b c2                	cmp    %edx,%eax
40619a:	76 04                	jbe    0x4061a0
40619c:	b0 01                	mov    $0x1,%al
40619e:	eb 02                	jmp    0x4061a2
4061a0:	32 c0                	xor    %al,%al
4061a2:	5d                   	pop    %ebp
4061a3:	c2 04 00             	ret    $0x4
4061a6:	8b ff                	mov    %edi,%edi
4061a8:	55                   	push   %ebp
4061a9:	8b ec                	mov    %esp,%ebp
4061ab:	56                   	push   %esi
4061ac:	8b f1                	mov    %ecx,%esi
4061ae:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4061b1:	57                   	push   %edi
4061b2:	8b 7e 10             	mov    0x10(%esi),%edi
4061b5:	3b f9                	cmp    %ecx,%edi
4061b7:	77 17                	ja     0x4061d0
4061b9:	83 66 10 00          	andl   $0x0,0x10(%esi)
4061bd:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4061c1:	72 04                	jb     0x4061c7
4061c3:	8b 06                	mov    (%esi),%eax
4061c5:	eb 02                	jmp    0x4061c9
4061c7:	8b c6                	mov    %esi,%eax
4061c9:	33 c9                	xor    %ecx,%ecx
4061cb:	66 89 08             	mov    %cx,(%eax)
4061ce:	eb 3e                	jmp    0x40620e
4061d0:	85 c9                	test   %ecx,%ecx
4061d2:	74 3a                	je     0x40620e
4061d4:	8b 46 14             	mov    0x14(%esi),%eax
4061d7:	83 f8 08             	cmp    $0x8,%eax
4061da:	72 04                	jb     0x4061e0
4061dc:	8b 16                	mov    (%esi),%edx
4061de:	eb 02                	jmp    0x4061e2
4061e0:	8b d6                	mov    %esi,%edx
4061e2:	2b f9                	sub    %ecx,%edi
4061e4:	74 14                	je     0x4061fa
4061e6:	8d 04 3f             	lea    (%edi,%edi,1),%eax
4061e9:	50                   	push   %eax
4061ea:	8d 04 4a             	lea    (%edx,%ecx,2),%eax
4061ed:	50                   	push   %eax
4061ee:	52                   	push   %edx
4061ef:	e8 38 85 00 00       	call   0x40e72c
4061f4:	8b 46 14             	mov    0x14(%esi),%eax
4061f7:	83 c4 0c             	add    $0xc,%esp
4061fa:	89 7e 10             	mov    %edi,0x10(%esi)
4061fd:	83 f8 08             	cmp    $0x8,%eax
406200:	72 04                	jb     0x406206
406202:	8b 06                	mov    (%esi),%eax
406204:	eb 02                	jmp    0x406208
406206:	8b c6                	mov    %esi,%eax
406208:	33 c9                	xor    %ecx,%ecx
40620a:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40620e:	5f                   	pop    %edi
40620f:	8b c6                	mov    %esi,%eax
406211:	5e                   	pop    %esi
406212:	5d                   	pop    %ebp
406213:	c2 08 00             	ret    $0x8
406216:	8b ff                	mov    %edi,%edi
406218:	55                   	push   %ebp
406219:	8b ec                	mov    %esp,%ebp
40621b:	8b 45 0c             	mov    0xc(%ebp),%eax
40621e:	53                   	push   %ebx
40621f:	8b 5d 08             	mov    0x8(%ebp),%ebx
406222:	56                   	push   %esi
406223:	57                   	push   %edi
406224:	8b f1                	mov    %ecx,%esi
406226:	8b 7b 10             	mov    0x10(%ebx),%edi
406229:	3b f8                	cmp    %eax,%edi
40622b:	0f 82 8f 00 00 00    	jb     0x4062c0
406231:	2b f8                	sub    %eax,%edi
406233:	39 7d 10             	cmp    %edi,0x10(%ebp)
406236:	73 03                	jae    0x40623b
406238:	8b 7d 10             	mov    0x10(%ebp),%edi
40623b:	3b f3                	cmp    %ebx,%esi
40623d:	75 28                	jne    0x406267
40623f:	8d 0c 07             	lea    (%edi,%eax,1),%ecx
406242:	39 4e 10             	cmp    %ecx,0x10(%esi)
406245:	72 79                	jb     0x4062c0
406247:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40624b:	89 4e 10             	mov    %ecx,0x10(%esi)
40624e:	72 04                	jb     0x406254
406250:	8b 16                	mov    (%esi),%edx
406252:	eb 02                	jmp    0x406256
406254:	8b d6                	mov    %esi,%edx
406256:	33 ff                	xor    %edi,%edi
406258:	50                   	push   %eax
406259:	66 89 3c 4a          	mov    %di,(%edx,%ecx,2)
40625d:	51                   	push   %ecx
40625e:	8b ce                	mov    %esi,%ecx
406260:	e8 41 ff ff ff       	call   0x4061a6
406265:	eb 50                	jmp    0x4062b7
406267:	51                   	push   %ecx
406268:	57                   	push   %edi
406269:	e8 6d 01 00 00       	call   0x4063db
40626e:	84 c0                	test   %al,%al
406270:	74 45                	je     0x4062b7
406272:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
406276:	72 02                	jb     0x40627a
406278:	8b 1b                	mov    (%ebx),%ebx
40627a:	8b 46 14             	mov    0x14(%esi),%eax
40627d:	83 f8 08             	cmp    $0x8,%eax
406280:	72 04                	jb     0x406286
406282:	8b 0e                	mov    (%esi),%ecx
406284:	eb 02                	jmp    0x406288
406286:	8b ce                	mov    %esi,%ecx
406288:	85 ff                	test   %edi,%edi
40628a:	74 17                	je     0x4062a3
40628c:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40628f:	50                   	push   %eax
406290:	8b 45 0c             	mov    0xc(%ebp),%eax
406293:	8d 04 43             	lea    (%ebx,%eax,2),%eax
406296:	50                   	push   %eax
406297:	51                   	push   %ecx
406298:	e8 89 84 00 00       	call   0x40e726
40629d:	8b 46 14             	mov    0x14(%esi),%eax
4062a0:	83 c4 0c             	add    $0xc,%esp
4062a3:	89 7e 10             	mov    %edi,0x10(%esi)
4062a6:	83 f8 08             	cmp    $0x8,%eax
4062a9:	72 04                	jb     0x4062af
4062ab:	8b 06                	mov    (%esi),%eax
4062ad:	eb 02                	jmp    0x4062b1
4062af:	8b c6                	mov    %esi,%eax
4062b1:	33 c9                	xor    %ecx,%ecx
4062b3:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
4062b7:	5f                   	pop    %edi
4062b8:	8b c6                	mov    %esi,%eax
4062ba:	5e                   	pop    %esi
4062bb:	5b                   	pop    %ebx
4062bc:	5d                   	pop    %ebp
4062bd:	c2 0c 00             	ret    $0xc
4062c0:	e8 13 ed ff ff       	call   0x404fd8
4062c5:	cc                   	int3
4062c6:	8b ff                	mov    %edi,%edi
4062c8:	55                   	push   %ebp
4062c9:	8b ec                	mov    %esp,%ebp
4062cb:	8b 45 08             	mov    0x8(%ebp),%eax
4062ce:	33 c9                	xor    %ecx,%ecx
4062d0:	85 c0                	test   %eax,%eax
4062d2:	74 16                	je     0x4062ea
4062d4:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4062d9:	77 15                	ja     0x4062f0
4062db:	03 c0                	add    %eax,%eax
4062dd:	50                   	push   %eax
4062de:	e8 e5 7b 00 00       	call   0x40dec8
4062e3:	59                   	pop    %ecx
4062e4:	8b c8                	mov    %eax,%ecx
4062e6:	85 c9                	test   %ecx,%ecx
4062e8:	74 06                	je     0x4062f0
4062ea:	8b c1                	mov    %ecx,%eax
4062ec:	5d                   	pop    %ebp
4062ed:	c2 04 00             	ret    $0x4
4062f0:	e8 1c 7d 00 00       	call   0x40e011
4062f5:	cc                   	int3
4062f6:	6a 10                	push   $0x10
4062f8:	b8 3f ed 40 00       	mov    $0x40ed3f,%eax
4062fd:	e8 b5 83 00 00       	call   0x40e6b7
406302:	8b f9                	mov    %ecx,%edi
406304:	89 7d ec             	mov    %edi,-0x14(%ebp)
406307:	8b 75 08             	mov    0x8(%ebp),%esi
40630a:	83 ce 07             	or     $0x7,%esi
40630d:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
406313:	76 05                	jbe    0x40631a
406315:	8b 75 08             	mov    0x8(%ebp),%esi
406318:	eb 29                	jmp    0x406343
40631a:	33 d2                	xor    %edx,%edx
40631c:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
406323:	8b c6                	mov    %esi,%eax
406325:	8b 5f 14             	mov    0x14(%edi),%ebx
406328:	f7 75 e8             	divl   -0x18(%ebp)
40632b:	8b cb                	mov    %ebx,%ecx
40632d:	d1 e9                	shr    $1,%ecx
40632f:	3b c8                	cmp    %eax,%ecx
406331:	76 10                	jbe    0x406343
406333:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
406338:	8b c6                	mov    %esi,%eax
40633a:	2b c1                	sub    %ecx,%eax
40633c:	3b d8                	cmp    %eax,%ebx
40633e:	77 03                	ja     0x406343
406340:	8d 34 19             	lea    (%ecx,%ebx,1),%esi
406343:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406347:	8d 46 01             	lea    0x1(%esi),%eax
40634a:	50                   	push   %eax
40634b:	e8 76 ff ff ff       	call   0x4062c6
406350:	8b d8                	mov    %eax,%ebx
406352:	eb 26                	jmp    0x40637a
406354:	8b 45 08             	mov    0x8(%ebp),%eax
406357:	89 45 e8             	mov    %eax,-0x18(%ebp)
40635a:	40                   	inc    %eax
40635b:	89 65 f0             	mov    %esp,-0x10(%ebp)
40635e:	50                   	push   %eax
40635f:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
406363:	e8 5e ff ff ff       	call   0x4062c6
406368:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40636b:	b8 71 63 40 00       	mov    $0x406371,%eax
406370:	c3                   	ret
406371:	8b 7d ec             	mov    -0x14(%ebp),%edi
406374:	8b 75 e8             	mov    -0x18(%ebp),%esi
406377:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40637a:	8b 45 0c             	mov    0xc(%ebp),%eax
40637d:	85 c0                	test   %eax,%eax
40637f:	74 19                	je     0x40639a
406381:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
406385:	72 04                	jb     0x40638b
406387:	8b 0f                	mov    (%edi),%ecx
406389:	eb 02                	jmp    0x40638d
40638b:	8b cf                	mov    %edi,%ecx
40638d:	03 c0                	add    %eax,%eax
40638f:	50                   	push   %eax
406390:	51                   	push   %ecx
406391:	53                   	push   %ebx
406392:	e8 8f 83 00 00       	call   0x40e726
406397:	83 c4 0c             	add    $0xc,%esp
40639a:	6a 00                	push   $0x0
40639c:	6a 01                	push   $0x1
40639e:	8b cf                	mov    %edi,%ecx
4063a0:	e8 4b 01 00 00       	call   0x4064f0
4063a5:	8b 45 0c             	mov    0xc(%ebp),%eax
4063a8:	89 1f                	mov    %ebx,(%edi)
4063aa:	89 77 14             	mov    %esi,0x14(%edi)
4063ad:	89 47 10             	mov    %eax,0x10(%edi)
4063b0:	83 fe 08             	cmp    $0x8,%esi
4063b3:	73 02                	jae    0x4063b7
4063b5:	8b df                	mov    %edi,%ebx
4063b7:	33 c9                	xor    %ecx,%ecx
4063b9:	66 89 0c 43          	mov    %cx,(%ebx,%eax,2)
4063bd:	e8 5a 82 00 00       	call   0x40e61c
4063c2:	c2 08 00             	ret    $0x8
4063c5:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4063c8:	6a 00                	push   $0x0
4063ca:	6a 01                	push   $0x1
4063cc:	e8 1f 01 00 00       	call   0x4064f0
4063d1:	6a 00                	push   $0x0
4063d3:	6a 00                	push   $0x0
4063d5:	e8 3c 82 00 00       	call   0x40e616
4063da:	cc                   	int3
4063db:	8b ff                	mov    %edi,%edi
4063dd:	55                   	push   %ebp
4063de:	8b ec                	mov    %esp,%ebp
4063e0:	56                   	push   %esi
4063e1:	8b 75 08             	mov    0x8(%ebp),%esi
4063e4:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
4063ea:	77 2e                	ja     0x40641a
4063ec:	39 71 14             	cmp    %esi,0x14(%ecx)
4063ef:	73 0b                	jae    0x4063fc
4063f1:	ff 71 10             	push   0x10(%ecx)
4063f4:	56                   	push   %esi
4063f5:	e8 fc fe ff ff       	call   0x4062f6
4063fa:	eb 14                	jmp    0x406410
4063fc:	85 f6                	test   %esi,%esi
4063fe:	75 12                	jne    0x406412
406400:	21 71 10             	and    %esi,0x10(%ecx)
406403:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
406407:	72 02                	jb     0x40640b
406409:	8b 09                	mov    (%ecx),%ecx
40640b:	33 c0                	xor    %eax,%eax
40640d:	66 89 01             	mov    %ax,(%ecx)
406410:	85 f6                	test   %esi,%esi
406412:	0f 95 c0             	setne  %al
406415:	5e                   	pop    %esi
406416:	5d                   	pop    %ebp
406417:	c2 08 00             	ret    $0x8
40641a:	e8 43 ec ff ff       	call   0x405062
40641f:	cc                   	int3
406420:	8b ff                	mov    %edi,%edi
406422:	55                   	push   %ebp
406423:	8b ec                	mov    %esp,%ebp
406425:	56                   	push   %esi
406426:	57                   	push   %edi
406427:	8b 7d 08             	mov    0x8(%ebp),%edi
40642a:	8b f1                	mov    %ecx,%esi
40642c:	57                   	push   %edi
40642d:	e8 36 fd ff ff       	call   0x406168
406432:	84 c0                	test   %al,%al
406434:	74 1c                	je     0x406452
406436:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40643a:	72 04                	jb     0x406440
40643c:	8b 06                	mov    (%esi),%eax
40643e:	eb 02                	jmp    0x406442
406440:	8b c6                	mov    %esi,%eax
406442:	ff 75 0c             	push   0xc(%ebp)
406445:	2b f8                	sub    %eax,%edi
406447:	d1 ff                	sar    $1,%edi
406449:	57                   	push   %edi
40644a:	56                   	push   %esi
40644b:	e8 c6 fd ff ff       	call   0x406216
406450:	eb 49                	jmp    0x40649b
406452:	53                   	push   %ebx
406453:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406456:	51                   	push   %ecx