00401000 <.text>:
401000:	55                   	push   %ebp
401001:	8b ec                	mov    %esp,%ebp
401003:	56                   	push   %esi
401004:	8b f1                	mov    %ecx,%esi
401006:	ff 36                	push   (%esi)
401008:	e8 2e 00 00 00       	call   0x40103b
40100d:	84 c0                	test   %al,%al
40100f:	75 26                	jne    0x401037
401011:	8b 45 08             	mov    0x8(%ebp),%eax
401014:	ff 30                	push   (%eax)
401016:	6a 00                	push   $0x0
401018:	6a 0c                	push   $0xc
40101a:	ff 36                	push   (%esi)
40101c:	ff 15 70 d6 48 00    	call   *0x48d670
401022:	85 c0                	test   %eax,%eax
401024:	74 11                	je     0x401037
401026:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
40102a:	0f 85 f0 0f 07 00    	jne    0x472020
401030:	b0 01                	mov    $0x1,%al
401032:	5e                   	pop    %esi
401033:	5d                   	pop    %ebp
401034:	c2 08 00             	ret    $0x8
401037:	32 c0                	xor    %al,%al
401039:	eb f7                	jmp    0x401032
40103b:	55                   	push   %ebp
40103c:	8b ec                	mov    %esp,%ebp
40103e:	51                   	push   %ecx
40103f:	8d 45 fc             	lea    -0x4(%ebp),%eax
401042:	50                   	push   %eax
401043:	68 88 13 00 00       	push   $0x1388
401048:	6a 02                	push   $0x2
40104a:	33 c0                	xor    %eax,%eax
40104c:	50                   	push   %eax
40104d:	50                   	push   %eax
40104e:	50                   	push   %eax
40104f:	ff 75 08             	push   0x8(%ebp)
401052:	ff 15 58 d6 48 00    	call   *0x48d658
401058:	f7 d8                	neg    %eax
40105a:	1a c0                	sbb    %al,%al
40105c:	fe c0                	inc    %al
40105e:	c9                   	leave
40105f:	c2 04 00             	ret    $0x4
401062:	55                   	push   %ebp
401063:	8b ec                	mov    %esp,%ebp
401065:	83 ec 34             	sub    $0x34,%esp
401068:	53                   	push   %ebx
401069:	56                   	push   %esi
40106a:	8b 75 08             	mov    0x8(%ebp),%esi
40106d:	57                   	push   %edi
40106e:	8b 46 04             	mov    0x4(%esi),%eax
401071:	8b f9                	mov    %ecx,%edi
401073:	8b 40 04             	mov    0x4(%eax),%eax
401076:	33 db                	xor    %ebx,%ebx
401078:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40107b:	6a 0e                	push   $0xe
40107d:	8b c8                	mov    %eax,%ecx
40107f:	89 45 fc             	mov    %eax,-0x4(%ebp)
401082:	e8 5d c5 00 00       	call   0x40d5e4
401087:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40108a:	84 c0                	test   %al,%al
40108c:	0f 85 13 51 07 00    	jne    0x4761a5
401092:	6a 02                	push   $0x2
401094:	58                   	pop    %eax
401095:	89 45 08             	mov    %eax,0x8(%ebp)
401098:	e8 cf 82 00 00       	call   0x40936c
40109d:	8b 45 fc             	mov    -0x4(%ebp),%eax
4010a0:	8b 48 08             	mov    0x8(%eax),%ecx
4010a3:	8b 01                	mov    (%ecx),%eax
4010a5:	89 45 dc             	mov    %eax,-0x24(%ebp)
4010a8:	8b 41 04             	mov    0x4(%ecx),%eax
4010ab:	89 45 e0             	mov    %eax,-0x20(%ebp)
4010ae:	8b 41 08             	mov    0x8(%ecx),%eax
4010b1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4010b4:	8b 41 0c             	mov    0xc(%ecx),%eax
4010b7:	89 45 e8             	mov    %eax,-0x18(%ebp)
4010ba:	ff 00                	incl   (%eax)
4010bc:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4010bf:	8b 01                	mov    (%ecx),%eax
4010c1:	89 45 ec             	mov    %eax,-0x14(%ebp)
4010c4:	8b 41 04             	mov    0x4(%ecx),%eax
4010c7:	89 45 f0             	mov    %eax,-0x10(%ebp)
4010ca:	8b 41 08             	mov    0x8(%ecx),%eax
4010cd:	89 45 f4             	mov    %eax,-0xc(%ebp)
4010d0:	8b 41 0c             	mov    0xc(%ecx),%eax
4010d3:	89 45 f8             	mov    %eax,-0x8(%ebp)
4010d6:	ff 00                	incl   (%eax)
4010d8:	8b 45 08             	mov    0x8(%ebp),%eax
4010db:	a8 02                	test   $0x2,%al
4010dd:	74 11                	je     0x4010f0
4010df:	83 e0 fd             	and    $0xfffffffd,%eax
4010e2:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4010e5:	89 45 08             	mov    %eax,0x8(%ebp)
4010e8:	e8 4a ba 00 00       	call   0x40cb37
4010ed:	8b 45 08             	mov    0x8(%ebp),%eax
4010f0:	a8 01                	test   $0x1,%al
4010f2:	75 55                	jne    0x401149
4010f4:	8d 45 ec             	lea    -0x14(%ebp),%eax
4010f7:	50                   	push   %eax
4010f8:	8b cf                	mov    %edi,%ecx
4010fa:	e8 ab 0b 00 00       	call   0x401caa
4010ff:	85 c0                	test   %eax,%eax
401101:	0f 84 b4 50 07 00    	je     0x4761bb
401107:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
40110b:	8b c3                	mov    %ebx,%eax
40110d:	77 44                	ja     0x401153
40110f:	8b 4e 04             	mov    0x4(%esi),%ecx
401112:	50                   	push   %eax
401113:	8b 09                	mov    (%ecx),%ecx
401115:	8d 45 ec             	lea    -0x14(%ebp),%eax
401118:	50                   	push   %eax
401119:	e8 68 c1 00 00       	call   0x40d286
40111e:	50                   	push   %eax
40111f:	e8 a4 18 00 00       	call   0x4029c8
401124:	8b 75 0c             	mov    0xc(%ebp),%esi
401127:	8b ce                	mov    %esi,%ecx
401129:	8b f8                	mov    %eax,%edi
40112b:	e8 f0 1a 01 00       	call   0x412c20
401130:	33 c0                	xor    %eax,%eax
401132:	40                   	inc    %eax
401133:	89 46 0c             	mov    %eax,0xc(%esi)
401136:	89 3e                	mov    %edi,(%esi)
401138:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40113b:	e8 f7 b9 00 00       	call   0x40cb37
401140:	5f                   	pop    %edi
401141:	5e                   	pop    %esi
401142:	8b c3                	mov    %ebx,%eax
401144:	5b                   	pop    %ebx
401145:	c9                   	leave
401146:	c2 08 00             	ret    $0x8
401149:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40114c:	e8 e6 b9 00 00       	call   0x40cb37
401151:	eb a1                	jmp    0x4010f4
401153:	8b 46 04             	mov    0x4(%esi),%eax
401156:	8b 48 08             	mov    0x8(%eax),%ecx
401159:	e8 19 a4 04 00       	call   0x44b577
40115e:	eb af                	jmp    0x40110f
401160:	55                   	push   %ebp
401161:	8b ec                	mov    %esp,%ebp
401163:	83 e4 f8             	and    $0xfffffff8,%esp
401166:	83 ec 44             	sub    $0x44,%esp
401169:	83 64 24 04 00       	andl   $0x0,0x4(%esp)
40116e:	53                   	push   %ebx
40116f:	56                   	push   %esi
401170:	8b 75 08             	mov    0x8(%ebp),%esi
401173:	57                   	push   %edi
401174:	8b 46 04             	mov    0x4(%esi),%eax
401177:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
40117b:	8b 38                	mov    (%eax),%edi
40117d:	6a 0e                	push   $0xe
40117f:	8b cf                	mov    %edi,%ecx
401181:	e8 5e c4 00 00       	call   0x40d5e4
401186:	8b cf                	mov    %edi,%ecx
401188:	84 c0                	test   %al,%al
40118a:	0f 85 7f 53 07 00    	jne    0x47650f
401190:	6a 02                	push   $0x2
401192:	5b                   	pop    %ebx
401193:	e8 d4 81 00 00       	call   0x40936c
401198:	8b 4f 08             	mov    0x8(%edi),%ecx
40119b:	8b 01                	mov    (%ecx),%eax
40119d:	89 44 24 24          	mov    %eax,0x24(%esp)
4011a1:	8b 41 04             	mov    0x4(%ecx),%eax
4011a4:	89 44 24 28          	mov    %eax,0x28(%esp)
4011a8:	8b 41 08             	mov    0x8(%ecx),%eax
4011ab:	89 44 24 2c          	mov    %eax,0x2c(%esp)
4011af:	8b 41 0c             	mov    0xc(%ecx),%eax
4011b2:	89 44 24 30          	mov    %eax,0x30(%esp)
4011b6:	ff 00                	incl   (%eax)
4011b8:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4011bc:	8b 01                	mov    (%ecx),%eax
4011be:	89 44 24 14          	mov    %eax,0x14(%esp)
4011c2:	8b 41 04             	mov    0x4(%ecx),%eax
4011c5:	89 44 24 18          	mov    %eax,0x18(%esp)
4011c9:	8b 41 08             	mov    0x8(%ecx),%eax
4011cc:	89 44 24 1c          	mov    %eax,0x1c(%esp)
4011d0:	8b 41 0c             	mov    0xc(%ecx),%eax
4011d3:	89 44 24 20          	mov    %eax,0x20(%esp)
4011d7:	ff 00                	incl   (%eax)
4011d9:	f6 c3 02             	test   $0x2,%bl
4011dc:	74 0c                	je     0x4011ea
4011de:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4011e2:	83 e3 fd             	and    $0xfffffffd,%ebx
4011e5:	e8 4d b9 00 00       	call   0x40cb37
4011ea:	f6 c3 01             	test   $0x1,%bl
4011ed:	0f 85 30 53 07 00    	jne    0x476523
4011f3:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4011f7:	e8 fe ab 00 00       	call   0x40bdfa
4011fc:	ff 74 24 18          	push   0x18(%esp)
401200:	ff 74 24 18          	push   0x18(%esp)
401204:	ff 15 60 d6 48 00    	call   *0x48d660
40120a:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40120e:	8d 44 24 14          	lea    0x14(%esp),%eax
401212:	50                   	push   %eax
401213:	8b cb                	mov    %ebx,%ecx
401215:	e8 90 0a 00 00       	call   0x401caa
40121a:	85 c0                	test   %eax,%eax
40121c:	0f 84 0f 53 07 00    	je     0x476531
401222:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
401226:	0f 85 ad 00 00 00    	jne    0x4012d9
40122c:	8b 46 04             	mov    0x4(%esi),%eax
40122f:	8b 48 04             	mov    0x4(%eax),%ecx
401232:	e8 4f c0 00 00       	call   0x40d286
401237:	85 c0                	test   %eax,%eax
401239:	0f 8e 9a 00 00 00    	jle    0x4012d9
40123f:	8b 46 04             	mov    0x4(%esi),%eax
401242:	8b 48 04             	mov    0x4(%eax),%ecx
401245:	e8 3c c0 00 00       	call   0x40d286
40124a:	8b f8                	mov    %eax,%edi
40124c:	8b 83 78 04 00 00    	mov    0x478(%ebx),%eax
401252:	83 64 24 0c 00       	andl   $0x0,0xc(%esp)
401257:	89 44 24 10          	mov    %eax,0x10(%esp)
40125b:	8d 44 24 10          	lea    0x10(%esp),%eax
40125f:	50                   	push   %eax
401260:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401264:	e8 7a 00 00 00       	call   0x4012e3
401269:	51                   	push   %ecx
40126a:	8b c4                	mov    %esp,%eax
40126c:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401270:	83 20 00             	andl   $0x0,(%eax)
401273:	e8 9e 16 00 00       	call   0x402916
401278:	84 c0                	test   %al,%al
40127a:	0f 85 ca 52 07 00    	jne    0x47654a
401280:	8d 4c 24 34          	lea    0x34(%esp),%ecx
401284:	e8 6e c5 00 00       	call   0x40d7f7
401289:	8d 44 24 14          	lea    0x14(%esp),%eax
40128d:	50                   	push   %eax
40128e:	8d 4c 24 38          	lea    0x38(%esp),%ecx
401292:	66 c7 44 24 48 00 00 	movw   $0x0,0x48(%esp)
401299:	e8 4f 5c 00 00       	call   0x406eed
40129e:	89 7c 24 4c          	mov    %edi,0x4c(%esp)
4012a2:	ff 15 a0 d7 48 00    	call   *0x48d7a0
4012a8:	89 44 24 48          	mov    %eax,0x48(%esp)
4012ac:	8d 44 24 34          	lea    0x34(%esp),%eax
4012b0:	50                   	push   %eax
4012b1:	8d 8b 78 04 00 00    	lea    0x478(%ebx),%ecx
4012b7:	e8 3b 00 00 00       	call   0x4012f7
4012bc:	8d 4c 24 34          	lea    0x34(%esp),%ecx
4012c0:	e8 72 b8 00 00       	call   0x40cb37
4012c5:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4012c9:	e8 69 b8 00 00       	call   0x40cb37
4012ce:	5f                   	pop    %edi
4012cf:	5e                   	pop    %esi
4012d0:	33 c0                	xor    %eax,%eax
4012d2:	5b                   	pop    %ebx
4012d3:	8b e5                	mov    %ebp,%esp
4012d5:	5d                   	pop    %ebp
4012d6:	c2 08 00             	ret    $0x8
4012d9:	bf fa 00 00 00       	mov    $0xfa,%edi
4012de:	e9 69 ff ff ff       	jmp    0x40124c
4012e3:	55                   	push   %ebp
4012e4:	8b ec                	mov    %esp,%ebp
4012e6:	8b 45 08             	mov    0x8(%ebp),%eax
4012e9:	3b c8                	cmp    %eax,%ecx
4012eb:	74 04                	je     0x4012f1
4012ed:	8b 00                	mov    (%eax),%eax
4012ef:	89 01                	mov    %eax,(%ecx)
4012f1:	8b c1                	mov    %ecx,%eax
4012f3:	5d                   	pop    %ebp
4012f4:	c2 04 00             	ret    $0x4
4012f7:	55                   	push   %ebp
4012f8:	8b ec                	mov    %esp,%ebp
4012fa:	56                   	push   %esi
4012fb:	57                   	push   %edi
4012fc:	8b f1                	mov    %ecx,%esi
4012fe:	33 ff                	xor    %edi,%edi
401300:	6a 0c                	push   $0xc
401302:	39 7e 04             	cmp    %edi,0x4(%esi)
401305:	0f 85 76 59 07 00    	jne    0x476c81
40130b:	e8 da e1 01 00       	call   0x41f4ea
401310:	59                   	pop    %ecx
401311:	85 c0                	test   %eax,%eax
401313:	74 0c                	je     0x401321
401315:	ff 75 08             	push   0x8(%ebp)
401318:	8b c8                	mov    %eax,%ecx
40131a:	e8 10 00 00 00       	call   0x40132f
40131f:	8b f8                	mov    %eax,%edi
401321:	89 3e                	mov    %edi,(%esi)
401323:	ff 46 08             	incl   0x8(%esi)
401326:	89 7e 04             	mov    %edi,0x4(%esi)
401329:	5f                   	pop    %edi
40132a:	5e                   	pop    %esi
40132b:	5d                   	pop    %ebp
40132c:	c2 04 00             	ret    $0x4
40132f:	55                   	push   %ebp
401330:	8b ec                	mov    %esp,%ebp
401332:	56                   	push   %esi
401333:	8b f1                	mov    %ecx,%esi
401335:	57                   	push   %edi
401336:	33 ff                	xor    %edi,%edi
401338:	6a 1c                	push   $0x1c
40133a:	89 7e 04             	mov    %edi,0x4(%esi)
40133d:	89 7e 08             	mov    %edi,0x8(%esi)
401340:	e8 a5 e1 01 00       	call   0x41f4ea
401345:	59                   	pop    %ecx
401346:	85 c0                	test   %eax,%eax
401348:	74 0c                	je     0x401356
40134a:	ff 75 08             	push   0x8(%ebp)
40134d:	8b c8                	mov    %eax,%ecx
40134f:	e8 0c 00 00 00       	call   0x401360
401354:	8b f8                	mov    %eax,%edi
401356:	89 3e                	mov    %edi,(%esi)
401358:	5f                   	pop    %edi
401359:	8b c6                	mov    %esi,%eax
40135b:	5e                   	pop    %esi
40135c:	5d                   	pop    %ebp
40135d:	c2 04 00             	ret    $0x4
401360:	55                   	push   %ebp
401361:	8b ec                	mov    %esp,%ebp
401363:	8b 55 08             	mov    0x8(%ebp),%edx
401366:	8b 02                	mov    (%edx),%eax
401368:	89 01                	mov    %eax,(%ecx)
40136a:	8b 42 04             	mov    0x4(%edx),%eax
40136d:	89 41 04             	mov    %eax,0x4(%ecx)
401370:	8b 42 08             	mov    0x8(%edx),%eax
401373:	89 41 08             	mov    %eax,0x8(%ecx)
401376:	8b 42 0c             	mov    0xc(%edx),%eax
401379:	89 41 0c             	mov    %eax,0xc(%ecx)
40137c:	ff 00                	incl   (%eax)
40137e:	8a 42 10             	mov    0x10(%edx),%al
401381:	88 41 10             	mov    %al,0x10(%ecx)
401384:	8a 42 11             	mov    0x11(%edx),%al
401387:	88 41 11             	mov    %al,0x11(%ecx)
40138a:	8b 42 14             	mov    0x14(%edx),%eax
40138d:	89 41 14             	mov    %eax,0x14(%ecx)
401390:	8b 42 18             	mov    0x18(%edx),%eax
401393:	89 41 18             	mov    %eax,0x18(%ecx)
401396:	8b c1                	mov    %ecx,%eax
401398:	5d                   	pop    %ebp
401399:	c2 04 00             	ret    $0x4
40139c:	55                   	push   %ebp
40139d:	8b ec                	mov    %esp,%ebp
40139f:	83 e4 f8             	and    $0xfffffff8,%esp
4013a2:	83 ec 44             	sub    $0x44,%esp
4013a5:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
4013aa:	53                   	push   %ebx
4013ab:	56                   	push   %esi
4013ac:	57                   	push   %edi
4013ad:	8b f9                	mov    %ecx,%edi
4013af:	8b 4d 08             	mov    0x8(%ebp),%ecx
4013b2:	8b 71 08             	mov    0x8(%ecx),%esi
4013b5:	33 c9                	xor    %ecx,%ecx
4013b7:	89 4c 24 10          	mov    %ecx,0x10(%esp)
4013bb:	83 fe 01             	cmp    $0x1,%esi
4013be:	8d 4c 24 30          	lea    0x30(%esp),%ecx
4013c2:	0f 94 c7             	sete   %bh
4013c5:	e8 2d c4 00 00       	call   0x40d7f7
4013ca:	83 fe 02             	cmp    $0x2,%esi
4013cd:	0f 82 97 00 00 00    	jb     0x40146a
4013d3:	8b 45 08             	mov    0x8(%ebp),%eax
4013d6:	6a 2a                	push   $0x2a