404ff6:	b8 fc 4f 40 00       	mov    $0x404ffc,%eax
404ffb:	c3                   	ret
404ffc:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
405003:	8b 5d e0             	mov    -0x20(%ebp),%ebx
405006:	8b 45 ec             	mov    -0x14(%ebp),%eax
405009:	8b 7d dc             	mov    -0x24(%ebp),%edi
40500c:	8b 75 e8             	mov    -0x18(%ebp),%esi
40500f:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
405013:	89 75 e0             	mov    %esi,-0x20(%ebp)
405016:	85 c0                	test   %eax,%eax
405018:	74 51                	je     0x40506b
40501a:	85 f6                	test   %esi,%esi
40501c:	74 4d                	je     0x40506b
40501e:	8b 4d d8             	mov    -0x28(%ebp),%ecx
405021:	51                   	push   %ecx
405022:	ff 75 08             	push   0x8(%ebp)
405025:	51                   	push   %ecx
405026:	50                   	push   %eax
405027:	ff 15 c4 62 41 00    	call   *0x4162c4
40502d:	83 c4 10             	add    $0x10,%esp
405030:	8b c8                	mov    %eax,%ecx
405032:	e8 d5 fb ff ff       	call   0x404c0c
405037:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40503a:	50                   	push   %eax
40503b:	ff 75 0c             	push   0xc(%ebp)
40503e:	50                   	push   %eax
40503f:	56                   	push   %esi
405040:	ff 15 c4 62 41 00    	call   *0x4162c4
405046:	83 c4 10             	add    $0x10,%esp
405049:	8b c8                	mov    %eax,%ecx
40504b:	e8 bc fb ff ff       	call   0x404c0c
405050:	8b 4d d0             	mov    -0x30(%ebp),%ecx
405053:	8d 45 e8             	lea    -0x18(%ebp),%eax
405056:	50                   	push   %eax
405057:	8d 45 ec             	lea    -0x14(%ebp),%eax
40505a:	50                   	push   %eax
40505b:	e8 f0 26 00 00       	call   0x407750
405060:	85 c0                	test   %eax,%eax
405062:	75 0c                	jne    0x405070
405064:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
405069:	eb 0d                	jmp    0x405078
40506b:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
405070:	85 db                	test   %ebx,%ebx
405072:	78 04                	js     0x405078
405074:	33 ff                	xor    %edi,%edi
405076:	33 f6                	xor    %esi,%esi
405078:	56                   	push   %esi
405079:	ff 15 c8 62 41 00    	call   *0x4162c8
40507f:	57                   	push   %edi
405080:	ff 15 c8 62 41 00    	call   *0x4162c8
405086:	f7 d3                	not    %ebx
405088:	59                   	pop    %ecx
405089:	c1 eb 1f             	shr    $0x1f,%ebx
40508c:	59                   	pop    %ecx
40508d:	8b c3                	mov    %ebx,%eax
40508f:	eb 02                	jmp    0x405093
405091:	33 c0                	xor    %eax,%eax
405093:	e8 94 d4 00 00       	call   0x41252c
405098:	c2 08 00             	ret    $0x8
40509b:	8b ff                	mov    %edi,%edi
40509d:	56                   	push   %esi
40509e:	57                   	push   %edi
40509f:	8b f9                	mov    %ecx,%edi
4050a1:	33 f6                	xor    %esi,%esi
4050a3:	8b 47 08             	mov    0x8(%edi),%eax
4050a6:	85 c0                	test   %eax,%eax
4050a8:	7e 2e                	jle    0x4050d8
4050aa:	85 f6                	test   %esi,%esi
4050ac:	78 36                	js     0x4050e4
4050ae:	3b f0                	cmp    %eax,%esi
4050b0:	7d 32                	jge    0x4050e4
4050b2:	8b 07                	mov    (%edi),%eax
4050b4:	ff 34 b0             	push   (%eax,%esi,4)
4050b7:	ff 15 c8 62 41 00    	call   *0x4162c8
4050bd:	59                   	pop    %ecx
4050be:	3b 77 08             	cmp    0x8(%edi),%esi
4050c1:	7d 21                	jge    0x4050e4
4050c3:	8b 47 04             	mov    0x4(%edi),%eax
4050c6:	ff 34 b0             	push   (%eax,%esi,4)
4050c9:	ff 15 c8 62 41 00    	call   *0x4162c8
4050cf:	8b 47 08             	mov    0x8(%edi),%eax
4050d2:	46                   	inc    %esi
4050d3:	59                   	pop    %ecx
4050d4:	3b f0                	cmp    %eax,%esi
4050d6:	7c d2                	jl     0x4050aa
4050d8:	8b cf                	mov    %edi,%ecx
4050da:	e8 41 26 00 00       	call   0x407720
4050df:	5f                   	pop    %edi
4050e0:	33 c0                	xor    %eax,%eax
4050e2:	5e                   	pop    %esi
4050e3:	c3                   	ret
4050e4:	b9 8c 00 00 c0       	mov    $0xc000008c,%ecx
4050e9:	e8 e3 fa ff ff       	call   0x404bd1
4050ee:	cc                   	int3
4050ef:	ff 71 08             	push   0x8(%ecx)
4050f2:	ff 15 34 62 41 00    	call   *0x416234
4050f8:	c3                   	ret
4050f9:	8b ff                	mov    %edi,%edi
4050fb:	55                   	push   %ebp
4050fc:	8b ec                	mov    %esp,%ebp
4050fe:	53                   	push   %ebx
4050ff:	56                   	push   %esi
405100:	57                   	push   %edi
405101:	8b f9                	mov    %ecx,%edi
405103:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405106:	8b 17                	mov    (%edi),%edx
405108:	8d 41 01             	lea    0x1(%ecx),%eax
40510b:	03 c2                	add    %edx,%eax
40510d:	3b c2                	cmp    %edx,%eax
40510f:	0f 8e 8c 00 00 00    	jle    0x4051a1
405115:	3b c1                	cmp    %ecx,%eax
405117:	0f 8e 84 00 00 00    	jle    0x4051a1
40511d:	8b 77 04             	mov    0x4(%edi),%esi
405120:	3b c6                	cmp    %esi,%eax
405122:	7c 36                	jl     0x40515a
405124:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
40512a:	7f 75                	jg     0x4051a1
40512c:	03 f6                	add    %esi,%esi
40512e:	3b c6                	cmp    %esi,%eax
405130:	7d f2                	jge    0x405124
405132:	6a 02                	push   $0x2
405134:	8b c6                	mov    %esi,%eax
405136:	59                   	pop    %ecx
405137:	f7 e1                	mul    %ecx
405139:	85 d2                	test   %edx,%edx
40513b:	77 64                	ja     0x4051a1
40513d:	72 05                	jb     0x405144
40513f:	83 f8 ff             	cmp    $0xffffffff,%eax
405142:	77 5d                	ja     0x4051a1
405144:	50                   	push   %eax
405145:	ff 77 08             	push   0x8(%edi)
405148:	ff 15 30 62 41 00    	call   *0x416230
40514e:	85 c0                	test   %eax,%eax
405150:	74 4f                	je     0x4051a1
405152:	8b 17                	mov    (%edi),%edx
405154:	89 47 08             	mov    %eax,0x8(%edi)
405157:	89 77 04             	mov    %esi,0x4(%edi)
40515a:	85 d2                	test   %edx,%edx
40515c:	78 43                	js     0x4051a1
40515e:	3b d6                	cmp    %esi,%edx
405160:	7d 3f                	jge    0x4051a1
405162:	8b de                	mov    %esi,%ebx
405164:	2b da                	sub    %edx,%ebx
405166:	3b de                	cmp    %esi,%ebx
405168:	7f 37                	jg     0x4051a1
40516a:	8b 47 08             	mov    0x8(%edi),%eax
40516d:	8b 75 0c             	mov    0xc(%ebp),%esi
405170:	8d 0c 50             	lea    (%eax,%edx,2),%ecx
405173:	8d 04 36             	lea    (%esi,%esi,1),%eax
405176:	50                   	push   %eax
405177:	ff 75 08             	push   0x8(%ebp)
40517a:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40517d:	50                   	push   %eax
40517e:	51                   	push   %ecx
40517f:	ff 15 c4 62 41 00    	call   *0x4162c4
405185:	83 c4 10             	add    $0x10,%esp
405188:	8b c8                	mov    %eax,%ecx
40518a:	e8 7d fa ff ff       	call   0x404c0c
40518f:	01 37                	add    %esi,(%edi)
405191:	33 d2                	xor    %edx,%edx
405193:	8b 47 08             	mov    0x8(%edi),%eax
405196:	8b 0f                	mov    (%edi),%ecx
405198:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40519c:	33 c0                	xor    %eax,%eax
40519e:	40                   	inc    %eax
40519f:	eb 02                	jmp    0x4051a3
4051a1:	33 c0                	xor    %eax,%eax
4051a3:	5f                   	pop    %edi
4051a4:	5e                   	pop    %esi
4051a5:	5b                   	pop    %ebx
4051a6:	5d                   	pop    %ebp
4051a7:	c2 08 00             	ret    $0x8
4051aa:	cc                   	int3
4051ab:	cc                   	int3
4051ac:	cc                   	int3
4051ad:	cc                   	int3
4051ae:	cc                   	int3
4051af:	cc                   	int3
4051b0:	8b ff                	mov    %edi,%edi
4051b2:	55                   	push   %ebp
4051b3:	8b ec                	mov    %esp,%ebp
4051b5:	8b 45 10             	mov    0x10(%ebp),%eax
4051b8:	85 c0                	test   %eax,%eax
4051ba:	74 03                	je     0x4051bf
4051bc:	83 20 00             	andl   $0x0,(%eax)
4051bf:	b8 01 40 00 80       	mov    $0x80004001,%eax
4051c4:	5d                   	pop    %ebp
4051c5:	c2 0c 00             	ret    $0xc
4051c8:	cc                   	int3
4051c9:	cc                   	int3
4051ca:	cc                   	int3
4051cb:	cc                   	int3
4051cc:	cc                   	int3
4051cd:	cc                   	int3
4051ce:	cc                   	int3
4051cf:	cc                   	int3
4051d0:	33 c0                	xor    %eax,%eax
4051d2:	40                   	inc    %eax
4051d3:	c2 04 00             	ret    $0x4
4051d6:	cc                   	int3
4051d7:	cc                   	int3
4051d8:	cc                   	int3
4051d9:	cc                   	int3
4051da:	cc                   	int3
4051db:	cc                   	int3
4051dc:	cc                   	int3
4051dd:	cc                   	int3
4051de:	cc                   	int3
4051df:	cc                   	int3
4051e0:	33 c0                	xor    %eax,%eax
4051e2:	c2 04 00             	ret    $0x4
4051e5:	8b ff                	mov    %edi,%edi
4051e7:	56                   	push   %esi
4051e8:	8b f1                	mov    %ecx,%esi
4051ea:	56                   	push   %esi
4051eb:	c7 06 5c 16 40 00    	movl   $0x40165c,(%esi)
4051f1:	e8 9a 02 00 00       	call   0x405490
4051f6:	8d 46 10             	lea    0x10(%esi),%eax
4051f9:	80 78 18 00          	cmpb   $0x0,0x18(%eax)
4051fd:	74 0b                	je     0x40520a
4051ff:	50                   	push   %eax
405200:	c6 40 18 00          	movb   $0x0,0x18(%eax)
405204:	ff 15 c8 60 41 00    	call   *0x4160c8
40520a:	8d 4e 04             	lea    0x4(%esi),%ecx
40520d:	e8 89 fe ff ff       	call   0x40509b
405212:	8d 4e 04             	lea    0x4(%esi),%ecx
405215:	5e                   	pop    %esi
405216:	e9 05 25 00 00       	jmp    0x407720
40521b:	cc                   	int3
40521c:	cc                   	int3
40521d:	cc                   	int3
40521e:	cc                   	int3
40521f:	cc                   	int3
405220:	8b ff                	mov    %edi,%edi
405222:	55                   	push   %ebp
405223:	8b ec                	mov    %esp,%ebp
405225:	56                   	push   %esi
405226:	8b f1                	mov    %ecx,%esi
405228:	e8 b8 ff ff ff       	call   0x4051e5
40522d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
405231:	74 08                	je     0x40523b
405233:	56                   	push   %esi
405234:	ff 15 d0 62 41 00    	call   *0x4162d0
40523a:	59                   	pop    %ecx
40523b:	8b c6                	mov    %esi,%eax
40523d:	5e                   	pop    %esi
40523e:	5d                   	pop    %ebp
40523f:	c2 04 00             	ret    $0x4
405242:	cc                   	int3
405243:	cc                   	int3
405244:	cc                   	int3
405245:	cc                   	int3
405246:	cc                   	int3
405247:	cc                   	int3
405248:	cc                   	int3
405249:	cc                   	int3
40524a:	cc                   	int3
40524b:	cc                   	int3
40524c:	cc                   	int3
40524d:	cc                   	int3
40524e:	cc                   	int3
40524f:	cc                   	int3
405250:	6a 04                	push   $0x4
405252:	b8 2a 2b 41 00       	mov    $0x412b2a,%eax
405257:	e8 02 d3 00 00       	call   0x41255e
40525c:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
405260:	74 4c                	je     0x4052ae
405262:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
405266:	74 46                	je     0x4052ae
405268:	8b 75 08             	mov    0x8(%ebp),%esi
40526b:	8d 7e 10             	lea    0x10(%esi),%edi
40526e:	57                   	push   %edi
40526f:	ff 15 64 61 41 00    	call   *0x416164
405275:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
405279:	ff 75 10             	push   0x10(%ebp)
40527c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405280:	8d 4e 04             	lea    0x4(%esi),%ecx
405283:	ff 75 0c             	push   0xc(%ebp)
405286:	e8 aa fc ff ff       	call   0x404f35
40528b:	57                   	push   %edi
40528c:	8b f0                	mov    %eax,%esi
40528e:	ff 15 5c 61 41 00    	call   *0x41615c
405294:	8d 4d f0             	lea    -0x10(%ebp),%ecx
405297:	e8 21 25 00 00       	call   0x4077bd
40529c:	f7 de                	neg    %esi
40529e:	1b f6                	sbb    %esi,%esi
4052a0:	81 e6 f2 ff f8 7f    	and    $0x7ff8fff2,%esi
4052a6:	8d 86 0e 00 07 80    	lea    -0x7ff8fff2(%esi),%eax
4052ac:	eb 05                	jmp    0x4052b3
4052ae:	b8 57 00 07 80       	mov    $0x80070057,%eax
4052b3:	e8 74 d2 00 00       	call   0x41252c
4052b8:	c2 0c 00             	ret    $0xc
4052bb:	68 2c 04 00 00       	push   $0x42c
4052c0:	b8 5b 2b 41 00       	mov    $0x412b5b,%eax
4052c5:	e8 33 d3 00 00       	call   0x4125fd
4052ca:	8b 55 10             	mov    0x10(%ebp),%edx
4052cd:	33 f6                	xor    %esi,%esi
4052cf:	8b 45 08             	mov    0x8(%ebp),%eax
4052d2:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4052d5:	89 95 dc fb ff ff    	mov    %edx,-0x424(%ebp)
4052db:	89 b5 d8 fb ff ff    	mov    %esi,-0x428(%ebp)
4052e1:	89 75 fc             	mov    %esi,-0x4(%ebp)
4052e4:	89 8d cc fb ff ff    	mov    %ecx,-0x434(%ebp)
4052ea:	89 b5 c8 fb ff ff    	mov    %esi,-0x438(%ebp)
4052f0:	89 b5 e0 fb ff ff    	mov    %esi,-0x420(%ebp)
4052f6:	6a 02                	push   $0x2
4052f8:	59                   	pop    %ecx
4052f9:	51                   	push   %ecx
4052fa:	56                   	push   %esi
4052fb:	50                   	push   %eax
4052fc:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405300:	ff 15 d8 60 41 00    	call   *0x4160d8
405306:	8b f8                	mov    %eax,%edi
405308:	89 bd d4 fb ff ff    	mov    %edi,-0x42c(%ebp)
40530e:	85 ff                	test   %edi,%edi
405310:	75 0c                	jne    0x40531e
405312:	e8 79 f9 ff ff       	call   0x404c90
405317:	8b f0                	mov    %eax,%esi
405319:	e9 32 01 00 00       	jmp    0x405450
40531e:	56                   	push   %esi
40531f:	53                   	push   %ebx
405320:	ff b5 dc fb ff ff    	push   -0x424(%ebp)
405326:	57                   	push   %edi
405327:	ff 15 bc 60 41 00    	call   *0x4160bc
40532d:	8b d8                	mov    %eax,%ebx
40532f:	85 db                	test   %ebx,%ebx
405331:	75 0a                	jne    0x40533d
405333:	e8 58 f9 ff ff       	call   0x404c90
405338:	e9 0a 01 00 00       	jmp    0x405447
40533d:	53                   	push   %ebx
40533e:	57                   	push   %edi
40533f:	ff 15 c0 60 41 00    	call   *0x4160c0
405345:	89 85 d0 fb ff ff    	mov    %eax,-0x430(%ebp)
40534b:	85 c0                	test   %eax,%eax
40534d:	74 e4                	je     0x405333
40534f:	53                   	push   %ebx
405350:	57                   	push   %edi
405351:	ff 15 6c 61 41 00    	call   *0x41616c
405357:	8b d8                	mov    %eax,%ebx
405359:	89 9d dc fb ff ff    	mov    %ebx,-0x424(%ebp)
40535f:	8d 43 01             	lea    0x1(%ebx),%eax
405362:	3b c3                	cmp    %ebx,%eax
405364:	73 2e                	jae    0x405394
405366:	8d 85 e4 fb ff ff    	lea    -0x41c(%ebp),%eax
40536c:	39 85 e0 fb ff ff    	cmp    %eax,-0x420(%ebp)
405372:	74 0b                	je     0x40537f
405374:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40537a:	e8 b0 2b 00 00       	call   0x407f2f
40537f:	8d 8d d8 fb ff ff    	lea    -0x428(%ebp),%ecx
405385:	e8 33 24 00 00       	call   0x4077bd