404106:	c2 18 00             	ret    $0x18
404109:	cc                   	int3
40410a:	cc                   	int3
40410b:	cc                   	int3
40410c:	cc                   	int3
40410d:	cc                   	int3
40410e:	cc                   	int3
40410f:	cc                   	int3
404110:	8b ff                	mov    %edi,%edi
404112:	55                   	push   %ebp
404113:	8b ec                	mov    %esp,%ebp
404115:	83 ec 28             	sub    $0x28,%esp
404118:	8b 45 0c             	mov    0xc(%ebp),%eax
40411b:	53                   	push   %ebx
40411c:	57                   	push   %edi
40411d:	33 db                	xor    %ebx,%ebx
40411f:	8b 78 3c             	mov    0x3c(%eax),%edi
404122:	8b 45 08             	mov    0x8(%ebp),%eax
404125:	21 5d f8             	and    %ebx,-0x8(%ebp)
404128:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40412b:	66 83 78 1c 40       	cmpw   $0x40,0x1c(%eax)
404130:	0f 84 ef 02 00 00    	je     0x404425
404136:	b9 00 00 00 20       	mov    $0x20000000,%ecx
40413b:	f7 c7 00 00 02 00    	test   $0x20000,%edi
404141:	74 07                	je     0x40414a
404143:	bf 00 00 01 00       	mov    $0x10000,%edi
404148:	eb 28                	jmp    0x404172
40414a:	f7 c7 00 00 10 00    	test   $0x100000,%edi
404150:	74 07                	je     0x404159
404152:	bf 00 00 04 00       	mov    $0x40000,%edi
404157:	eb 19                	jmp    0x404172
404159:	f6 45 10 04          	testb  $0x4,0x10(%ebp)
40415d:	74 18                	je     0x404177
40415f:	81 e7 00 00 04 00    	and    $0x40000,%edi
404165:	f7 df                	neg    %edi
404167:	1b ff                	sbb    %edi,%edi
404169:	81 e7 fc ff 01 00    	and    $0x1fffc,%edi
40416f:	83 c7 04             	add    $0x4,%edi
404172:	89 7d fc             	mov    %edi,-0x4(%ebp)
404175:	eb 05                	jmp    0x40417c
404177:	8b f9                	mov    %ecx,%edi
404179:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40417c:	80 78 17 02          	cmpb   $0x2,0x17(%eax)
404180:	75 05                	jne    0x404187
404182:	0b f9                	or     %ecx,%edi
404184:	89 7d fc             	mov    %edi,-0x4(%ebp)
404187:	56                   	push   %esi
404188:	85 f9                	test   %edi,%ecx
40418a:	74 2a                	je     0x4041b6
40418c:	6a 04                	push   $0x4
40418e:	ff 15 f8 33 43 00    	call   *0x4333f8
404194:	8b d8                	mov    %eax,%ebx
404196:	59                   	pop    %ecx
404197:	85 db                	test   %ebx,%ebx
404199:	0f 84 85 02 00 00    	je     0x404424
40419f:	6a 21                	push   $0x21
4041a1:	58                   	pop    %eax
4041a2:	66 89 03             	mov    %ax,(%ebx)
4041a5:	33 f6                	xor    %esi,%esi
4041a7:	b8 ff 00 00 00       	mov    $0xff,%eax
4041ac:	46                   	inc    %esi
4041ad:	66 89 43 02          	mov    %ax,0x2(%ebx)
4041b1:	e9 52 02 00 00       	jmp    0x404408
4041b6:	f7 c7 00 00 05 00    	test   $0x50000,%edi
4041bc:	0f 85 21 02 00 00    	jne    0x4043e3
4041c2:	ff 75 14             	push   0x14(%ebp)
4041c5:	21 5d ec             	and    %ebx,-0x14(%ebp)
4041c8:	33 f6                	xor    %esi,%esi
4041ca:	89 75 e8             	mov    %esi,-0x18(%ebp)
4041cd:	ff 15 0c 33 43 00    	call   *0x43330c
4041d3:	89 45 f4             	mov    %eax,-0xc(%ebp)
4041d6:	85 c0                	test   %eax,%eax
4041d8:	0f 84 46 02 00 00    	je     0x404424
4041de:	ff 75 08             	push   0x8(%ebp)
4041e1:	ff 15 b0 30 43 00    	call   *0x4330b0
4041e7:	50                   	push   %eax
4041e8:	ff 75 f4             	push   -0xc(%ebp)
4041eb:	89 45 dc             	mov    %eax,-0x24(%ebp)
4041ee:	ff 15 ac 30 43 00    	call   *0x4330ac
4041f4:	89 45 d8             	mov    %eax,-0x28(%ebp)
4041f7:	33 c0                	xor    %eax,%eax
4041f9:	50                   	push   %eax
4041fa:	50                   	push   %eax
4041fb:	50                   	push   %eax
4041fc:	68 63 6d 61 70       	push   $0x70616d63
404201:	ff 75 f4             	push   -0xc(%ebp)
404204:	ff 15 a8 30 43 00    	call   *0x4330a8
40420a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40420d:	83 f8 ff             	cmp    $0xffffffff,%eax
404210:	0f 84 93 01 00 00    	je     0x4043a9
404216:	50                   	push   %eax
404217:	ff 15 f8 33 43 00    	call   *0x4333f8
40421d:	8b d0                	mov    %eax,%edx
40421f:	89 55 ec             	mov    %edx,-0x14(%ebp)
404222:	59                   	pop    %ecx
404223:	85 d2                	test   %edx,%edx
404225:	0f 84 7e 01 00 00    	je     0x4043a9
40422b:	ff 75 e4             	push   -0x1c(%ebp)
40422e:	52                   	push   %edx
40422f:	56                   	push   %esi
404230:	68 63 6d 61 70       	push   $0x70616d63
404235:	ff 75 f4             	push   -0xc(%ebp)
404238:	ff 15 a8 30 43 00    	call   *0x4330a8
40423e:	8b 55 ec             	mov    -0x14(%ebp),%edx
404241:	0f b6 4a 02          	movzbl 0x2(%edx),%ecx
404245:	0f b6 42 03          	movzbl 0x3(%edx),%eax
404249:	66 c1 e1 08          	shl    $0x8,%cx
40424d:	66 0b c8             	or     %ax,%cx
404250:	0f b7 c1             	movzwl %cx,%eax
404253:	89 45 f0             	mov    %eax,-0x10(%ebp)
404256:	66 85 c0             	test   %ax,%ax
404259:	0f 84 4a 01 00 00    	je     0x4043a9
40425f:	8d 7a 04             	lea    0x4(%edx),%edi
404262:	8b d8                	mov    %eax,%ebx
404264:	0f b6 0f             	movzbl (%edi),%ecx
404267:	0f b6 47 01          	movzbl 0x1(%edi),%eax
40426b:	c1 e1 08             	shl    $0x8,%ecx
40426e:	0b c8                	or     %eax,%ecx
404270:	83 f9 03             	cmp    $0x3,%ecx
404273:	75 32                	jne    0x4042a7
404275:	0f b6 77 04          	movzbl 0x4(%edi),%esi
404279:	0f b6 47 05          	movzbl 0x5(%edi),%eax
40427d:	c1 e6 08             	shl    $0x8,%esi
404280:	0b f0                	or     %eax,%esi
404282:	0f b6 47 06          	movzbl 0x6(%edi),%eax
404286:	c1 e6 08             	shl    $0x8,%esi
404289:	0b f0                	or     %eax,%esi
40428b:	0f b6 47 07          	movzbl 0x7(%edi),%eax
40428f:	c1 e6 08             	shl    $0x8,%esi
404292:	0b f0                	or     %eax,%esi
404294:	03 f2                	add    %edx,%esi
404296:	0f b6 0e             	movzbl (%esi),%ecx
404299:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40429d:	c1 e1 08             	shl    $0x8,%ecx
4042a0:	0b c8                	or     %eax,%ecx
4042a2:	83 f9 04             	cmp    $0x4,%ecx
4042a5:	74 0e                	je     0x4042b5
4042a7:	81 c3 ff ff 00 00    	add    $0xffff,%ebx
4042ad:	83 c7 08             	add    $0x8,%edi
4042b0:	66 85 db             	test   %bx,%bx
4042b3:	75 af                	jne    0x404264
4042b5:	8b 7d fc             	mov    -0x4(%ebp),%edi
4042b8:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4042bb:	8b 45 f0             	mov    -0x10(%ebp),%eax
4042be:	8b 5d e0             	mov    -0x20(%ebp),%ebx
4042c1:	89 75 e8             	mov    %esi,-0x18(%ebp)
4042c4:	66 85 c0             	test   %ax,%ax
4042c7:	0f 84 dc 00 00 00    	je     0x4043a9
4042cd:	0f b6 4e 06          	movzbl 0x6(%esi),%ecx
4042d1:	0f b6 46 07          	movzbl 0x7(%esi),%eax
4042d5:	66 c1 e1 08          	shl    $0x8,%cx
4042d9:	66 0b c8             	or     %ax,%cx
4042dc:	0f b7 c1             	movzwl %cx,%eax
4042df:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4042e2:	0f b7 c0             	movzwl %ax,%eax
4042e5:	d1 e8                	shr    $1,%eax
4042e7:	89 45 f8             	mov    %eax,-0x8(%ebp)
4042ea:	c1 e0 02             	shl    $0x2,%eax
4042ed:	50                   	push   %eax
4042ee:	ff 15 f8 33 43 00    	call   *0x4333f8
4042f4:	8b d8                	mov    %eax,%ebx
4042f6:	59                   	pop    %ecx
4042f7:	85 db                	test   %ebx,%ebx
4042f9:	75 07                	jne    0x404302
4042fb:	33 f6                	xor    %esi,%esi
4042fd:	e9 aa 00 00 00       	jmp    0x4043ac
404302:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
404305:	33 d2                	xor    %edx,%edx
404307:	0f b7 c1             	movzwl %cx,%eax
40430a:	83 c0 10             	add    $0x10,%eax
40430d:	03 c6                	add    %esi,%eax
40430f:	89 45 e0             	mov    %eax,-0x20(%ebp)
404312:	33 c0                	xor    %eax,%eax
404314:	89 45 f0             	mov    %eax,-0x10(%ebp)
404317:	66 3b d1             	cmp    %cx,%dx
40431a:	73 49                	jae    0x404365
40431c:	8b 7d e8             	mov    -0x18(%ebp),%edi
40431f:	0f b7 d0             	movzwl %ax,%edx
404322:	8b 45 e0             	mov    -0x20(%ebp),%eax
404325:	8b f2                	mov    %edx,%esi
404327:	d1 ee                	shr    $1,%esi
404329:	0f b6 0c 02          	movzbl (%edx,%eax,1),%ecx
40432d:	0f b6 44 02 01       	movzbl 0x1(%edx,%eax,1),%eax
404332:	66 c1 e1 08          	shl    $0x8,%cx
404336:	66 0b c8             	or     %ax,%cx
404339:	66 89 0c b3          	mov    %cx,(%ebx,%esi,4)
40433d:	0f b6 4c 3a 0e       	movzbl 0xe(%edx,%edi,1),%ecx
404342:	0f b6 44 17 0f       	movzbl 0xf(%edi,%edx,1),%eax
404347:	66 c1 e1 08          	shl    $0x8,%cx
40434b:	66 0b c8             	or     %ax,%cx
40434e:	8b 45 f0             	mov    -0x10(%ebp),%eax
404351:	83 c0 02             	add    $0x2,%eax
404354:	66 89 4c b3 02       	mov    %cx,0x2(%ebx,%esi,4)
404359:	89 45 f0             	mov    %eax,-0x10(%ebp)
40435c:	66 3b 45 e4          	cmp    -0x1c(%ebp),%ax
404360:	72 bd                	jb     0x40431f
404362:	8b 7d fc             	mov    -0x4(%ebp),%edi
404365:	8b 75 f8             	mov    -0x8(%ebp),%esi
404368:	83 fe 02             	cmp    $0x2,%esi
40436b:	77 3f                	ja     0x4043ac
40436d:	0f b7 0b             	movzwl (%ebx),%ecx
404370:	ba ff 00 00 00       	mov    $0xff,%edx
404375:	8d 81 00 10 00 00    	lea    0x1000(%ecx),%eax
40437b:	66 3b c2             	cmp    %dx,%ax
40437e:	77 2c                	ja     0x4043ac
404380:	b8 21 f0 00 00       	mov    $0xf021,%eax
404385:	6a 21                	push   $0x21
404387:	5a                   	pop    %edx
404388:	66 3b c8             	cmp    %ax,%cx
40438b:	8b c2                	mov    %edx,%eax
40438d:	72 03                	jb     0x404392
40438f:	0f b6 c1             	movzbl %cl,%eax
404392:	66 89 03             	mov    %ax,(%ebx)
404395:	c6 43 03 00          	movb   $0x0,0x3(%ebx)
404399:	66 3b c2             	cmp    %dx,%ax
40439c:	73 03                	jae    0x4043a1
40439e:	66 89 13             	mov    %dx,(%ebx)
4043a1:	81 cf 00 00 00 20    	or     $0x20000000,%edi
4043a7:	eb 03                	jmp    0x4043ac
4043a9:	8b 75 f8             	mov    -0x8(%ebp),%esi
4043ac:	8b 45 dc             	mov    -0x24(%ebp),%eax
4043af:	85 c0                	test   %eax,%eax
4043b1:	74 07                	je     0x4043ba
4043b3:	50                   	push   %eax
4043b4:	ff 15 b4 30 43 00    	call   *0x4330b4
4043ba:	8b 45 ec             	mov    -0x14(%ebp),%eax
4043bd:	85 c0                	test   %eax,%eax
4043bf:	74 08                	je     0x4043c9
4043c1:	50                   	push   %eax
4043c2:	ff 15 d4 33 43 00    	call   *0x4333d4
4043c8:	59                   	pop    %ecx
4043c9:	ff 75 d8             	push   -0x28(%ebp)
4043cc:	ff 75 f4             	push   -0xc(%ebp)
4043cf:	ff 15 ac 30 43 00    	call   *0x4330ac
4043d5:	ff 75 f4             	push   -0xc(%ebp)
4043d8:	ff 75 14             	push   0x14(%ebp)
4043db:	ff 15 08 33 43 00    	call   *0x433308
4043e1:	eb 21                	jmp    0x404404
4043e3:	6a 04                	push   $0x4
4043e5:	ff 15 f8 33 43 00    	call   *0x4333f8
4043eb:	8b d8                	mov    %eax,%ebx
4043ed:	59                   	pop    %ecx
4043ee:	85 db                	test   %ebx,%ebx
4043f0:	74 32                	je     0x404424
4043f2:	6a 21                	push   $0x21
4043f4:	58                   	pop    %eax
4043f5:	66 89 03             	mov    %ax,(%ebx)
4043f8:	33 f6                	xor    %esi,%esi
4043fa:	b8 ff ff 00 00       	mov    $0xffff,%eax
4043ff:	46                   	inc    %esi
404400:	66 89 43 02          	mov    %ax,0x2(%ebx)
404404:	85 f6                	test   %esi,%esi
404406:	74 1c                	je     0x404424
404408:	8b 4d 08             	mov    0x8(%ebp),%ecx
40440b:	8b d7                	mov    %edi,%edx
40440d:	56                   	push   %esi
40440e:	53                   	push   %ebx
40440f:	e8 a5 03 00 00       	call   0x4047b9
404414:	85 c0                	test   %eax,%eax
404416:	75 0c                	jne    0x404424
404418:	85 db                	test   %ebx,%ebx
40441a:	74 08                	je     0x404424
40441c:	53                   	push   %ebx
40441d:	ff 15 d4 33 43 00    	call   *0x4333d4
404423:	59                   	pop    %ecx
404424:	5e                   	pop    %esi
404425:	33 c0                	xor    %eax,%eax
404427:	5f                   	pop    %edi
404428:	40                   	inc    %eax
404429:	5b                   	pop    %ebx
40442a:	c9                   	leave
40442b:	c2 10 00             	ret    $0x10
40442e:	8b ff                	mov    %edi,%edi
404430:	55                   	push   %ebp
404431:	8b ec                	mov    %esp,%ebp
404433:	81 ec 58 08 00 00    	sub    $0x858,%esp
404439:	a1 64 10 41 00       	mov    0x411064,%eax
40443e:	33 c5                	xor    %ebp,%eax
404440:	89 45 fc             	mov    %eax,-0x4(%ebp)
404443:	53                   	push   %ebx
404444:	56                   	push   %esi
404445:	57                   	push   %edi
404446:	83 a5 c4 f7 ff ff 00 	andl   $0x0,-0x83c(%ebp)
40444d:	8d 7d f0             	lea    -0x10(%ebp),%edi
404450:	83 a5 c0 f7 ff ff 00 	andl   $0x0,-0x840(%ebp)
404457:	8d 85 c0 f7 ff ff    	lea    -0x840(%ebp),%eax
40445d:	be d4 13 40 00       	mov    $0x4013d4,%esi
404462:	89 8d b4 f7 ff ff    	mov    %ecx,-0x84c(%ebp)
404468:	50                   	push   %eax
404469:	33 db                	xor    %ebx,%ebx
40446b:	8d 45 f0             	lea    -0x10(%ebp),%eax
40446e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40446f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
404470:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
404472:	bf 19 00 02 00       	mov    $0x20019,%edi
404477:	33 f6                	xor    %esi,%esi
404479:	57                   	push   %edi
40447a:	53                   	push   %ebx
40447b:	50                   	push   %eax
40447c:	68 01 00 00 80       	push   $0x80000001
404481:	46                   	inc    %esi
404482:	ff 15 04 30 43 00    	call   *0x433004
404488:	85 c0                	test   %eax,%eax
40448a:	74 07                	je     0x404493
40448c:	33 c0                	xor    %eax,%eax
40448e:	e9 46 02 00 00       	jmp    0x4046d9
404493:	ff 15 a4 31 43 00    	call   *0x4331a4
404499:	50                   	push   %eax
40449a:	68 e0 13 40 00       	push   $0x4013e0
40449f:	8d 45 e0             	lea    -0x20(%ebp),%eax
4044a2:	6a 08                	push   $0x8
4044a4:	50                   	push   %eax
4044a5:	e8 fe f4 ff ff       	call   0x4039a8
4044aa:	83 c4 10             	add    $0x10,%esp
4044ad:	85 c0                	test   %eax,%eax
4044af:	0f 88 f6 01 00 00    	js     0x4046ab
4044b5:	8d 85 c4 f7 ff ff    	lea    -0x83c(%ebp),%eax
4044bb:	50                   	push   %eax
4044bc:	57                   	push   %edi
4044bd:	6a 00                	push   $0x0
4044bf:	8d 45 e0             	lea    -0x20(%ebp),%eax
4044c2:	50                   	push   %eax
4044c3:	ff b5 c0 f7 ff ff    	push   -0x840(%ebp)
4044c9:	ff 15 04 30 43 00    	call   *0x433004
4044cf:	85 c0                	test   %eax,%eax
4044d1:	0f 85 d6 01 00 00    	jne    0x4046ad
4044d7:	21 9d b0 f7 ff ff    	and    %ebx,-0x850(%ebp)
4044dd:	8d 85 bc f7 ff ff    	lea    -0x844(%ebp),%eax
4044e3:	50                   	push   %eax
4044e4:	8d 85 d0 f9 ff ff    	lea    -0x630(%ebp),%eax
4044ea:	50                   	push   %eax
4044eb:	8d 85 a8 f7 ff ff    	lea    -0x858(%ebp),%eax
4044f1:	50                   	push   %eax
4044f2:	6a 00                	push   $0x0
4044f4:	8d 85 b8 f7 ff ff    	lea    -0x848(%ebp),%eax
4044fa:	50                   	push   %eax
4044fb:	8d 85 d8 fb ff ff    	lea    -0x428(%ebp),%eax
404501:	50                   	push   %eax
404502:	6a 00                	push   $0x0
404504:	e9 78 01 00 00       	jmp    0x404681
404509:	6a ff                	push   $0xffffffff
40450b:	68 e8 13 40 00       	push   $0x4013e8
404510:	6a ff                	push   $0xffffffff
404512:	8d 85 d8 fb ff ff    	lea    -0x428(%ebp),%eax
404518:	50                   	push   %eax
404519:	56                   	push   %esi
40451a:	6a 7f                	push   $0x7f
40451c:	ff 15 c0 31 43 00    	call   *0x4331c0
404522:	83 f8 02             	cmp    $0x2,%eax
404525:	75 0a                	jne    0x404531