40613d:	8b 38                	mov    (%eax),%edi
40613f:	85 ff                	test   %edi,%edi
406141:	74 05                	je     0x406148
406143:	03 c7                	add    %edi,%eax
406145:	89 45 e0             	mov    %eax,-0x20(%ebp)
406148:	41                   	inc    %ecx
406149:	eb ca                	jmp    0x406115
40614b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40614f:	85 f6                	test   %esi,%esi
406151:	74 a4                	je     0x4060f7
406153:	85 d2                	test   %edx,%edx
406155:	74 a0                	je     0x4060f7
406157:	33 c0                	xor    %eax,%eax
406159:	40                   	inc    %eax
40615a:	e8 9a 91 00 00       	call   0x40f2f9
40615f:	c3                   	ret
406160:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
406164:	74 09                	je     0x40616f
406166:	ff 75 ec             	push   -0x14(%ebp)
406169:	ff 15 10 20 41 00    	call   *0x412010
40616f:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
406174:	e8 91 17 00 00       	call   0x40790a
406179:	b8 7f 61 40 00       	mov    $0x40617f,%eax
40617e:	c3                   	ret
40617f:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406183:	e9 29 ff ff ff       	jmp    0x4060b1
406188:	6a 28                	push   $0x28
40618a:	b8 2c f9 40 00       	mov    $0x40f92c,%eax
40618f:	e8 bb 91 00 00       	call   0x40f34f
406194:	8b f9                	mov    %ecx,%edi
406196:	33 f6                	xor    %esi,%esi
406198:	89 75 e8             	mov    %esi,-0x18(%ebp)
40619b:	89 75 ec             	mov    %esi,-0x14(%ebp)
40619e:	39 b7 a0 00 00 00    	cmp    %esi,0xa0(%edi)
4061a4:	0f 84 77 01 00 00    	je     0x406321
4061aa:	89 75 fc             	mov    %esi,-0x4(%ebp)
4061ad:	b8 80 00 00 00       	mov    $0x80,%eax
4061b2:	89 45 e8             	mov    %eax,-0x18(%ebp)
4061b5:	89 45 ec             	mov    %eax,-0x14(%ebp)
4061b8:	50                   	push   %eax
4061b9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4061bc:	ff 15 34 22 41 00    	call   *0x412234
4061c2:	89 45 d8             	mov    %eax,-0x28(%ebp)
4061c5:	ff 75 ec             	push   -0x14(%ebp)
4061c8:	8b 4d 08             	mov    0x8(%ebp),%ecx
4061cb:	ff 15 34 22 41 00    	call   *0x412234
4061d1:	89 45 dc             	mov    %eax,-0x24(%ebp)
4061d4:	8b d6                	mov    %esi,%edx
4061d6:	89 55 e0             	mov    %edx,-0x20(%ebp)
4061d9:	8b 87 a0 00 00 00    	mov    0xa0(%edi),%eax
4061df:	39 b7 94 00 00 00    	cmp    %esi,0x94(%edi)
4061e5:	75 36                	jne    0x40621d
4061e7:	8b ce                	mov    %esi,%ecx
4061e9:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
4061ec:	3b 8f a4 00 00 00    	cmp    0xa4(%edi),%ecx
4061f2:	73 70                	jae    0x406264
4061f4:	6b d9 0c             	imul   $0xc,%ecx,%ebx
4061f7:	8b 04 03             	mov    (%ebx,%eax,1),%eax
4061fa:	8b 40 44             	mov    0x44(%eax),%eax
4061fd:	3b 87 84 00 00 00    	cmp    0x84(%edi),%eax
406203:	75 0c                	jne    0x406211
406205:	8b 97 a0 00 00 00    	mov    0xa0(%edi),%edx
40620b:	8b 54 13 08          	mov    0x8(%ebx,%edx,1),%edx
40620f:	eb 50                	jmp    0x406261
406211:	41                   	inc    %ecx
406212:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
406215:	8b 87 a0 00 00 00    	mov    0xa0(%edi),%eax
40621b:	eb cf                	jmp    0x4061ec
40621d:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406220:	8b de                	mov    %esi,%ebx
406222:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
406225:	8b c8                	mov    %eax,%ecx
406227:	8b 41 44             	mov    0x44(%ecx),%eax
40622a:	3b 87 84 00 00 00    	cmp    0x84(%edi),%eax
406230:	74 15                	je     0x406247
406232:	8b 01                	mov    (%ecx),%eax
406234:	85 c0                	test   %eax,%eax
406236:	74 0f                	je     0x406247
406238:	03 d8                	add    %eax,%ebx
40623a:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40623d:	8b 8f a0 00 00 00    	mov    0xa0(%edi),%ecx
406243:	03 cb                	add    %ebx,%ecx
406245:	eb e0                	jmp    0x406227
406247:	8b 41 04             	mov    0x4(%ecx),%eax
40624a:	c1 e0 06             	shl    $0x6,%eax
40624d:	81 bc 08 88 00 00 00 	cmpl   $0x23495452,0x88(%eax,%ecx,1)
406254:	52 54 49 23
406258:	75 0a                	jne    0x406264
40625a:	8b 94 08 90 00 00 00 	mov    0x90(%eax,%ecx,1),%edx
406261:	89 55 e0             	mov    %edx,-0x20(%ebp)
406264:	85 d2                	test   %edx,%edx
406266:	75 5c                	jne    0x4062c4
406268:	39 b7 84 00 00 00    	cmp    %esi,0x84(%edi)
40626e:	75 3a                	jne    0x4062aa
406270:	33 f6                	xor    %esi,%esi
406272:	46                   	inc    %esi
406273:	89 75 d0             	mov    %esi,-0x30(%ebp)
406276:	b9 ff 00 00 00       	mov    $0xff,%ecx
40627b:	e8 d1 37 00 00       	call   0x409a51
406280:	50                   	push   %eax
406281:	ff 75 e8             	push   -0x18(%ebp)
406284:	ff 75 d8             	push   -0x28(%ebp)
406287:	ff 15 c4 22 41 00    	call   *0x4122c4
40628d:	83 c4 0c             	add    $0xc,%esp
406290:	b9 fe 00 00 00       	mov    $0xfe,%ecx
406295:	e8 b7 37 00 00       	call   0x409a51
40629a:	50                   	push   %eax
40629b:	ff 75 ec             	push   -0x14(%ebp)
40629e:	ff 75 dc             	push   -0x24(%ebp)
4062a1:	ff 15 c4 22 41 00    	call   *0x4122c4
4062a7:	83 c4 0c             	add    $0xc,%esp
4062aa:	6a ff                	push   $0xffffffff
4062ac:	8b 4d 08             	mov    0x8(%ebp),%ecx
4062af:	ff 15 40 22 41 00    	call   *0x412240
4062b5:	6a ff                	push   $0xffffffff
4062b7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4062ba:	ff 15 40 22 41 00    	call   *0x412240
4062c0:	8b c6                	mov    %esi,%eax
4062c2:	eb 5f                	jmp    0x406323
4062c4:	39 b7 d8 00 00 00    	cmp    %esi,0xd8(%edi)
4062ca:	75 06                	jne    0x4062d2
4062cc:	8b b7 8c 00 00 00    	mov    0x8c(%edi),%esi
4062d2:	8d 45 cc             	lea    -0x34(%ebp),%eax
4062d5:	50                   	push   %eax
4062d6:	8d 45 ec             	lea    -0x14(%ebp),%eax
4062d9:	50                   	push   %eax
4062da:	ff 75 dc             	push   -0x24(%ebp)
4062dd:	8d 45 e8             	lea    -0x18(%ebp),%eax
4062e0:	50                   	push   %eax
4062e1:	ff 75 d8             	push   -0x28(%ebp)
4062e4:	52                   	push   %edx
4062e5:	56                   	push   %esi
4062e6:	ff 15 14 20 41 00    	call   *0x412014
4062ec:	8b f0                	mov    %eax,%esi
4062ee:	89 75 d0             	mov    %esi,-0x30(%ebp)
4062f1:	6a ff                	push   $0xffffffff
4062f3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4062f6:	ff 15 40 22 41 00    	call   *0x412240
4062fc:	6a ff                	push   $0xffffffff
4062fe:	8b 4d 0c             	mov    0xc(%ebp),%ecx
406301:	ff 15 40 22 41 00    	call   *0x412240
406307:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40630b:	eb b3                	jmp    0x4062c0
40630d:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
406312:	e8 f3 15 00 00       	call   0x40790a
406317:	b8 1d 63 40 00       	mov    $0x40631d,%eax
40631c:	c3                   	ret
40631d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406321:	33 c0                	xor    %eax,%eax
406323:	e8 d1 8f 00 00       	call   0x40f2f9
406328:	c2 08 00             	ret    $0x8
40632b:	6a 1c                	push   $0x1c
40632d:	b8 47 f9 40 00       	mov    $0x40f947,%eax
406332:	e8 18 90 00 00       	call   0x40f34f
406337:	8b f1                	mov    %ecx,%esi
406339:	33 db                	xor    %ebx,%ebx
40633b:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40633e:	89 5d ec             	mov    %ebx,-0x14(%ebp)
406341:	89 5d dc             	mov    %ebx,-0x24(%ebp)
406344:	8b fb                	mov    %ebx,%edi
406346:	89 7d e8             	mov    %edi,-0x18(%ebp)
406349:	89 9e a8 00 00 00    	mov    %ebx,0xa8(%esi)
40634f:	89 9e ac 00 00 00    	mov    %ebx,0xac(%esi)
406355:	39 5e 44             	cmp    %ebx,0x44(%esi)
406358:	75 08                	jne    0x406362
40635a:	33 c0                	xor    %eax,%eax
40635c:	40                   	inc    %eax
40635d:	e9 0c 01 00 00       	jmp    0x40646e
406362:	8b c3                	mov    %ebx,%eax
406364:	39 9e d8 00 00 00    	cmp    %ebx,0xd8(%esi)
40636a:	75 06                	jne    0x406372
40636c:	8b 86 8c 00 00 00    	mov    0x8c(%esi),%eax
406372:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406375:	6a 05                	push   $0x5
406377:	53                   	push   %ebx
406378:	50                   	push   %eax
406379:	ff 15 18 20 41 00    	call   *0x412018
40637f:	89 45 ec             	mov    %eax,-0x14(%ebp)
406382:	85 c0                	test   %eax,%eax
406384:	75 0a                	jne    0x406390
406386:	e8 69 34 00 00       	call   0x4097f4
40638b:	e9 dc 00 00 00       	jmp    0x40646c
406390:	89 5d d8             	mov    %ebx,-0x28(%ebp)
406393:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
406397:	b8 00 10 00 00       	mov    $0x1000,%eax
40639c:	89 45 e0             	mov    %eax,-0x20(%ebp)
40639f:	43                   	inc    %ebx
4063a0:	89 5d d8             	mov    %ebx,-0x28(%ebp)
4063a3:	83 fb 02             	cmp    $0x2,%ebx
4063a6:	77 7c                	ja     0x406424
4063a8:	03 45 dc             	add    -0x24(%ebp),%eax
4063ab:	89 45 e0             	mov    %eax,-0x20(%ebp)
4063ae:	8b c8                	mov    %eax,%ecx
4063b0:	e8 b5 48 00 00       	call   0x40ac6a
4063b5:	8b f8                	mov    %eax,%edi
4063b7:	89 7d e8             	mov    %edi,-0x18(%ebp)
4063ba:	85 ff                	test   %edi,%edi
4063bc:	75 0d                	jne    0x4063cb
4063be:	68 0e 00 07 80       	push   $0x8007000e
4063c3:	ff 15 74 20 41 00    	call   *0x412074
4063c9:	eb bb                	jmp    0x406386
4063cb:	33 c9                	xor    %ecx,%ecx
4063cd:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4063d0:	51                   	push   %ecx
4063d1:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4063d4:	50                   	push   %eax
4063d5:	8d 86 a8 00 00 00    	lea    0xa8(%esi),%eax
4063db:	50                   	push   %eax
4063dc:	8d 45 dc             	lea    -0x24(%ebp),%eax
4063df:	50                   	push   %eax
4063e0:	ff 75 e0             	push   -0x20(%ebp)
4063e3:	57                   	push   %edi
4063e4:	6a 01                	push   $0x1
4063e6:	6a 30                	push   $0x30
4063e8:	51                   	push   %ecx
4063e9:	ff 75 ec             	push   -0x14(%ebp)
4063ec:	ff 15 1c 20 41 00    	call   *0x41201c
4063f2:	83 f8 01             	cmp    $0x1,%eax
4063f5:	74 2d                	je     0x406424
4063f7:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4063fa:	e8 c7 47 00 00       	call   0x40abc6
4063ff:	ff 15 48 20 41 00    	call   *0x412048
406405:	3d ea 00 00 00       	cmp    $0xea,%eax
40640a:	75 08                	jne    0x406414
40640c:	8b 7d e8             	mov    -0x18(%ebp),%edi
40640f:	8b 45 e0             	mov    -0x20(%ebp),%eax
406412:	eb 8b                	jmp    0x40639f
406414:	e8 db 33 00 00       	call   0x4097f4
406419:	ff 75 ec             	push   -0x14(%ebp)
40641c:	ff 15 20 20 41 00    	call   *0x412020
406422:	eb 48                	jmp    0x40646c
406424:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406428:	83 be a8 00 00 00 00 	cmpl   $0x0,0xa8(%esi)
40642f:	75 0d                	jne    0x40643e
406431:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406434:	e8 8d 47 00 00       	call   0x40abc6
406439:	e9 1c ff ff ff       	jmp    0x40635a
40643e:	89 be ac 00 00 00    	mov    %edi,0xac(%esi)
406444:	e9 11 ff ff ff       	jmp    0x40635a
406449:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40644d:	74 09                	je     0x406458
40644f:	ff 75 ec             	push   -0x14(%ebp)
406452:	ff 15 20 20 41 00    	call   *0x412020
406458:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
40645d:	e8 a8 14 00 00       	call   0x40790a
406462:	b8 68 64 40 00       	mov    $0x406468,%eax
406467:	c3                   	ret
406468:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40646c:	33 c0                	xor    %eax,%eax
40646e:	e8 86 8e 00 00       	call   0x40f2f9
406473:	c3                   	ret
406474:	8b ff                	mov    %edi,%edi
406476:	55                   	push   %ebp
406477:	8b ec                	mov    %esp,%ebp
406479:	51                   	push   %ecx
40647a:	51                   	push   %ecx
40647b:	53                   	push   %ebx
40647c:	56                   	push   %esi
40647d:	8b 75 08             	mov    0x8(%ebp),%esi
406480:	8b da                	mov    %edx,%ebx
406482:	57                   	push   %edi
406483:	8b f9                	mov    %ecx,%edi
406485:	89 7d f8             	mov    %edi,-0x8(%ebp)
406488:	85 f6                	test   %esi,%esi
40648a:	0f 84 9c 00 00 00    	je     0x40652c
406490:	83 3e 00             	cmpl   $0x0,(%esi)
406493:	0f 85 93 00 00 00    	jne    0x40652c
406499:	b9 00 80 00 00       	mov    $0x8000,%ecx
40649e:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4064a1:	e8 c4 47 00 00       	call   0x40ac6a
4064a6:	89 06                	mov    %eax,(%esi)
4064a8:	85 c0                	test   %eax,%eax
4064aa:	74 70                	je     0x40651c
4064ac:	8d 4d fc             	lea    -0x4(%ebp),%ecx
4064af:	51                   	push   %ecx
4064b0:	50                   	push   %eax
4064b1:	6a 00                	push   $0x0
4064b3:	6a 00                	push   $0x0
4064b5:	53                   	push   %ebx
4064b6:	57                   	push   %edi
4064b7:	eb 2b                	jmp    0x4064e4
4064b9:	81 45 fc 00 20 00 00 	addl   $0x2000,-0x4(%ebp)
4064c0:	8b ce                	mov    %esi,%ecx
4064c2:	e8 ff 46 00 00       	call   0x40abc6
4064c7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4064ca:	33 ff                	xor    %edi,%edi
4064cc:	89 3e                	mov    %edi,(%esi)
4064ce:	e8 97 47 00 00       	call   0x40ac6a
4064d3:	89 06                	mov    %eax,(%esi)
4064d5:	85 c0                	test   %eax,%eax
4064d7:	74 43                	je     0x40651c
4064d9:	8d 4d fc             	lea    -0x4(%ebp),%ecx
4064dc:	51                   	push   %ecx
4064dd:	50                   	push   %eax
4064de:	57                   	push   %edi
4064df:	57                   	push   %edi
4064e0:	53                   	push   %ebx
4064e1:	ff 75 f8             	push   -0x8(%ebp)
4064e4:	ff 15 24 20 41 00    	call   *0x412024
4064ea:	8b f8                	mov    %eax,%edi
4064ec:	81 ff ea 00 00 00    	cmp    $0xea,%edi
4064f2:	74 c5                	je     0x4064b9
4064f4:	33 db                	xor    %ebx,%ebx
4064f6:	43                   	inc    %ebx
4064f7:	85 ff                	test   %edi,%edi
4064f9:	74 1d                	je     0x406518
4064fb:	83 3e 00             	cmpl   $0x0,(%esi)
4064fe:	74 0a                	je     0x40650a
406500:	8b ce                	mov    %esi,%ecx
406502:	e8 bf 46 00 00       	call   0x40abc6
406507:	83 26 00             	andl   $0x0,(%esi)
40650a:	57                   	push   %edi
40650b:	33 db                	xor    %ebx,%ebx
40650d:	ff 15 74 20 41 00    	call   *0x412074
406513:	e8 dc 32 00 00       	call   0x4097f4
406518:	8b c3                	mov    %ebx,%eax
40651a:	eb 12                	jmp    0x40652e
40651c:	68 0e 00 07 80       	push   $0x8007000e
406521:	ff 15 74 20 41 00    	call   *0x412074
406527:	e8 c8 32 00 00       	call   0x4097f4
40652c:	33 c0                	xor    %eax,%eax
40652e:	5f                   	pop    %edi
40652f:	5e                   	pop    %esi
406530:	5b                   	pop    %ebx
406531:	c9                   	leave
406532:	c2 04 00             	ret    $0x4
406535:	cc                   	int3
406536:	cc                   	int3
406537:	cc                   	int3
406538:	cc                   	int3
406539:	cc                   	int3
40653a:	cc                   	int3
40653b:	cc                   	int3
40653c:	cc                   	int3
40653d:	cc                   	int3
40653e:	cc                   	int3
40653f:	cc                   	int3
406540:	8b ff                	mov    %edi,%edi
406542:	55                   	push   %ebp
406543:	8b ec                	mov    %esp,%ebp
406545:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406549:	53                   	push   %ebx
40654a:	56                   	push   %esi
40654b:	57                   	push   %edi
40654c:	0f 84 aa 00 00 00    	je     0x4065fc
406552:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406555:	85 db                	test   %ebx,%ebx
406557:	0f 84 9f 00 00 00    	je     0x4065fc
40655d:	ff 15 90 21 41 00    	call   *0x412190
406563:	68 00 00 00 02       	push   $0x2000000