402164:	51                   	push   %ecx
402165:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
402168:	50                   	push   %eax
402169:	e8 02 ca 02 00       	call   0x42eb70
40216e:	8b 45 08             	mov    0x8(%ebp),%eax
402171:	56                   	push   %esi
402172:	ff 75 0c             	push   0xc(%ebp)
402175:	ff 30                	push   (%eax)
402177:	e8 74 cf 02 00       	call   0x42f0f0
40217c:	83 c4 18             	add    $0x18,%esp
40217f:	eb 05                	jmp    0x402186
402181:	bf ff ff 00 80       	mov    $0x8000ffff,%edi
402186:	8b c7                	mov    %edi,%eax
402188:	5f                   	pop    %edi
402189:	5e                   	pop    %esi
40218a:	5b                   	pop    %ebx
40218b:	8b e5                	mov    %ebp,%esp
40218d:	5d                   	pop    %ebp
40218e:	c2 0c 00             	ret    $0xc
402191:	55                   	push   %ebp
402192:	8b ec                	mov    %esp,%ebp
402194:	6a 01                	push   $0x1
402196:	ff 75 0c             	push   0xc(%ebp)
402199:	ff 75 08             	push   0x8(%ebp)
40219c:	e8 9b f2 ff ff       	call   0x40143c
4021a1:	5d                   	pop    %ebp
4021a2:	c2 08 00             	ret    $0x8
4021a5:	55                   	push   %ebp
4021a6:	8b ec                	mov    %esp,%ebp
4021a8:	6a 00                	push   $0x0
4021aa:	ff 75 10             	push   0x10(%ebp)
4021ad:	ff 75 0c             	push   0xc(%ebp)
4021b0:	ff 75 08             	push   0x8(%ebp)
4021b3:	e8 fa f2 ff ff       	call   0x4014b2
4021b8:	5d                   	pop    %ebp
4021b9:	c2 0c 00             	ret    $0xc
4021bc:	55                   	push   %ebp
4021bd:	8b ec                	mov    %esp,%ebp
4021bf:	8b 4d 08             	mov    0x8(%ebp),%ecx
4021c2:	83 ca ff             	or     $0xffffffff,%edx
4021c5:	8b 45 10             	mov    0x10(%ebp),%eax
4021c8:	53                   	push   %ebx
4021c9:	56                   	push   %esi
4021ca:	33 f6                	xor    %esi,%esi
4021cc:	8b d8                	mov    %eax,%ebx
4021ce:	57                   	push   %edi
4021cf:	8b fe                	mov    %esi,%edi
4021d1:	39 31                	cmp    %esi,(%ecx)
4021d3:	74 1e                	je     0x4021f3
4021d5:	ff 31                	push   (%ecx)
4021d7:	e8 75 19 00 00       	call   0x403b51
4021dc:	8b f8                	mov    %eax,%edi
4021de:	83 ca ff             	or     $0xffffffff,%edx
4021e1:	3b fa                	cmp    %edx,%edi
4021e3:	75 0a                	jne    0x4021ef
4021e5:	be 57 00 07 80       	mov    $0x80070057,%esi
4021ea:	e9 01 01 00 00       	jmp    0x4022f0
4021ef:	d1 ef                	shr    $1,%edi
4021f1:	8b c3                	mov    %ebx,%eax
4021f3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4021f6:	85 c0                	test   %eax,%eax
4021f8:	75 4a                	jne    0x402244
4021fa:	56                   	push   %esi
4021fb:	56                   	push   %esi
4021fc:	52                   	push   %edx
4021fd:	51                   	push   %ecx
4021fe:	56                   	push   %esi
4021ff:	ff 75 14             	push   0x14(%ebp)
402202:	ff 15 fc b0 44 00    	call   *0x44b0fc
402208:	8b d8                	mov    %eax,%ebx
40220a:	85 db                	test   %ebx,%ebx
40220c:	75 33                	jne    0x402241
40220e:	ff 15 e8 b0 44 00    	call   *0x44b0e8
402214:	0f b7 f0             	movzwl %ax,%esi
402217:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40221d:	85 c0                	test   %eax,%eax
40221f:	0f 4e f0             	cmovle %eax,%esi
402222:	b8 05 40 00 80       	mov    $0x80004005,%eax
402227:	85 f6                	test   %esi,%esi
402229:	0f 49 f0             	cmovns %eax,%esi
40222c:	56                   	push   %esi
40222d:	68 0c 02 00 00       	push   $0x20c
402232:	68 90 b5 44 00       	push   $0x44b590
402237:	e8 97 15 00 00       	call   0x4037d3
40223c:	e9 af 00 00 00       	jmp    0x4022f0
402241:	4b                   	dec    %ebx
402242:	eb 09                	jmp    0x40224d
402244:	80 3c 01 00          	cmpb   $0x0,(%ecx,%eax,1)
402248:	75 03                	jne    0x40224d
40224a:	8d 58 ff             	lea    -0x1(%eax),%ebx
40224d:	8d 43 01             	lea    0x1(%ebx),%eax
402250:	3b f8                	cmp    %eax,%edi
402252:	73 48                	jae    0x40229c
402254:	8b f8                	mov    %eax,%edi
402256:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40225c:	72 0a                	jb     0x402268
40225e:	be 0e 00 07 80       	mov    $0x8007000e,%esi
402263:	e9 88 00 00 00       	jmp    0x4022f0
402268:	8b 45 08             	mov    0x8(%ebp),%eax
40226b:	6a 01                	push   $0x1
40226d:	8b 08                	mov    (%eax),%ecx
40226f:	8d 04 3f             	lea    (%edi,%edi,1),%eax
402272:	50                   	push   %eax
402273:	85 c9                	test   %ecx,%ecx
402275:	74 08                	je     0x40227f
402277:	51                   	push   %ecx
402278:	e8 f5 17 00 00       	call   0x403a72
40227d:	eb 05                	jmp    0x402284
40227f:	e8 50 16 00 00       	call   0x4038d4
402284:	8b c8                	mov    %eax,%ecx
402286:	85 c9                	test   %ecx,%ecx
402288:	75 0d                	jne    0x402297
40228a:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40228f:	56                   	push   %esi
402290:	68 28 02 00 00       	push   $0x228
402295:	eb 9b                	jmp    0x402232
402297:	8b 45 08             	mov    0x8(%ebp),%eax
40229a:	89 08                	mov    %ecx,(%eax)
40229c:	8b 45 10             	mov    0x10(%ebp),%eax
40229f:	85 c0                	test   %eax,%eax
4022a1:	57                   	push   %edi
4022a2:	8b 7d 08             	mov    0x8(%ebp),%edi
4022a5:	ff 37                	push   (%edi)
4022a7:	6a ff                	push   $0xffffffff
4022a9:	59                   	pop    %ecx
4022aa:	0f 44 c1             	cmove  %ecx,%eax
4022ad:	50                   	push   %eax
4022ae:	ff 75 0c             	push   0xc(%ebp)
4022b1:	56                   	push   %esi
4022b2:	ff 75 14             	push   0x14(%ebp)
4022b5:	ff 15 fc b0 44 00    	call   *0x44b0fc
4022bb:	85 c0                	test   %eax,%eax
4022bd:	75 29                	jne    0x4022e8
4022bf:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4022c5:	0f b7 f0             	movzwl %ax,%esi
4022c8:	81 ce 00 00 07 80    	or     $0x80070000,%esi
4022ce:	85 c0                	test   %eax,%eax
4022d0:	0f 4e f0             	cmovle %eax,%esi
4022d3:	b8 05 40 00 80       	mov    $0x80004005,%eax
4022d8:	85 f6                	test   %esi,%esi
4022da:	0f 49 f0             	cmovns %eax,%esi
4022dd:	56                   	push   %esi
4022de:	68 2f 02 00 00       	push   $0x22f
4022e3:	e9 4a ff ff ff       	jmp    0x402232
4022e8:	8b 0f                	mov    (%edi),%ecx
4022ea:	33 c0                	xor    %eax,%eax
4022ec:	66 89 04 59          	mov    %ax,(%ecx,%ebx,2)
4022f0:	5f                   	pop    %edi
4022f1:	8b c6                	mov    %esi,%eax
4022f3:	5e                   	pop    %esi
4022f4:	5b                   	pop    %ebx
4022f5:	5d                   	pop    %ebp
4022f6:	c2 10 00             	ret    $0x10
4022f9:	55                   	push   %ebp
4022fa:	8b ec                	mov    %esp,%ebp
4022fc:	6a 01                	push   $0x1
4022fe:	ff 75 10             	push   0x10(%ebp)
402301:	ff 75 0c             	push   0xc(%ebp)
402304:	ff 75 08             	push   0x8(%ebp)
402307:	e8 a6 f1 ff ff       	call   0x4014b2
40230c:	5d                   	pop    %ebp
40230d:	c2 0c 00             	ret    $0xc
402310:	55                   	push   %ebp
402311:	8b ec                	mov    %esp,%ebp
402313:	68 00 02 00 00       	push   $0x200
402318:	ff 75 10             	push   0x10(%ebp)
40231b:	ff 75 0c             	push   0xc(%ebp)
40231e:	ff 75 08             	push   0x8(%ebp)
402321:	e8 39 f2 ff ff       	call   0x40155f
402326:	5d                   	pop    %ebp
402327:	c2 0c 00             	ret    $0xc
40232a:	55                   	push   %ebp
40232b:	8b ec                	mov    %esp,%ebp
40232d:	56                   	push   %esi
40232e:	33 f6                	xor    %esi,%esi
402330:	81 7d 0c ff ff ff 7f 	cmpl   $0x7fffffff,0xc(%ebp)
402337:	72 07                	jb     0x402340
402339:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40233e:	eb 3d                	jmp    0x40237d
402340:	57                   	push   %edi
402341:	8b 7d 08             	mov    0x8(%ebp),%edi
402344:	39 37                	cmp    %esi,(%edi)
402346:	74 0d                	je     0x402355
402348:	56                   	push   %esi
402349:	ff 75 0c             	push   0xc(%ebp)
40234c:	ff 37                	push   (%edi)
40234e:	e8 1f 17 00 00       	call   0x403a72
402353:	eb 0a                	jmp    0x40235f
402355:	6a 01                	push   $0x1
402357:	ff 75 0c             	push   0xc(%ebp)
40235a:	e8 75 15 00 00       	call   0x4038d4
40235f:	85 c0                	test   %eax,%eax
402361:	75 17                	jne    0x40237a
402363:	be 0e 00 07 80       	mov    $0x8007000e,%esi
402368:	56                   	push   %esi
402369:	68 e3 00 00 00       	push   $0xe3
40236e:	68 90 b5 44 00       	push   $0x44b590
402373:	e8 5b 14 00 00       	call   0x4037d3
402378:	eb 02                	jmp    0x40237c
40237a:	89 07                	mov    %eax,(%edi)
40237c:	5f                   	pop    %edi
40237d:	8b c6                	mov    %esi,%eax
40237f:	5e                   	pop    %esi
402380:	5d                   	pop    %ebp
402381:	c2 08 00             	ret    $0x8
402384:	55                   	push   %ebp
402385:	8b ec                	mov    %esp,%ebp
402387:	51                   	push   %ecx
402388:	53                   	push   %ebx
402389:	56                   	push   %esi
40238a:	57                   	push   %edi
40238b:	8b 7d 08             	mov    0x8(%ebp),%edi
40238e:	33 db                	xor    %ebx,%ebx
402390:	33 f6                	xor    %esi,%esi
402392:	89 5d fc             	mov    %ebx,-0x4(%ebp)
402395:	39 1f                	cmp    %ebx,(%edi)
402397:	74 2c                	je     0x4023c5
402399:	ff 37                	push   (%edi)
40239b:	e8 b1 17 00 00       	call   0x403b51
4023a0:	8b f0                	mov    %eax,%esi
4023a2:	83 fe ff             	cmp    $0xffffffff,%esi
4023a5:	75 07                	jne    0x4023ae
4023a7:	b8 57 00 07 80       	mov    $0x80070057,%eax
4023ac:	eb 7f                	jmp    0x40242d
4023ae:	8d 45 fc             	lea    -0x4(%ebp),%eax
4023b1:	50                   	push   %eax
4023b2:	68 ff ff ff 7f       	push   $0x7fffffff
4023b7:	ff 37                	push   (%edi)
4023b9:	e8 60 f8 ff ff       	call   0x401c1e
4023be:	85 c0                	test   %eax,%eax
4023c0:	78 6b                	js     0x40242d
4023c2:	8b 5d fc             	mov    -0x4(%ebp),%ebx
4023c5:	8b 7d 10             	mov    0x10(%ebp),%edi
4023c8:	85 ff                	test   %edi,%edi
4023ca:	75 18                	jne    0x4023e4
4023cc:	8d 45 10             	lea    0x10(%ebp),%eax
4023cf:	50                   	push   %eax
4023d0:	68 ff ff ff 7f       	push   $0x7fffffff
4023d5:	ff 75 0c             	push   0xc(%ebp)
4023d8:	e8 41 f8 ff ff       	call   0x401c1e
4023dd:	85 c0                	test   %eax,%eax
4023df:	78 4c                	js     0x40242d
4023e1:	8b 7d 10             	mov    0x10(%ebp),%edi
4023e4:	8b ce                	mov    %esi,%ecx
4023e6:	8d 47 01             	lea    0x1(%edi),%eax
4023e9:	2b cb                	sub    %ebx,%ecx
4023eb:	3b c8                	cmp    %eax,%ecx
4023ed:	73 1a                	jae    0x402409
4023ef:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
4023f2:	8b 5d 08             	mov    0x8(%ebp),%ebx
4023f5:	8d 34 45 02 00 00 00 	lea    0x2(,%eax,2),%esi
4023fc:	56                   	push   %esi
4023fd:	53                   	push   %ebx
4023fe:	e8 27 ff ff ff       	call   0x40232a
402403:	85 c0                	test   %eax,%eax
402405:	78 26                	js     0x40242d
402407:	eb 03                	jmp    0x40240c
402409:	8b 5d 08             	mov    0x8(%ebp),%ebx
40240c:	83 3b 00             	cmpl   $0x0,(%ebx)
40240f:	74 17                	je     0x402428
402411:	68 00 02 00 00       	push   $0x200
402416:	6a 00                	push   $0x0
402418:	6a 00                	push   $0x0
40241a:	57                   	push   %edi
40241b:	ff 75 0c             	push   0xc(%ebp)
40241e:	56                   	push   %esi
40241f:	ff 33                	push   (%ebx)
402421:	e8 be f1 ff ff       	call   0x4015e4
402426:	eb 05                	jmp    0x40242d
402428:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
40242d:	5f                   	pop    %edi
40242e:	5e                   	pop    %esi
40242f:	5b                   	pop    %ebx
402430:	8b e5                	mov    %ebp,%esp
402432:	5d                   	pop    %ebp
402433:	c2 0c 00             	ret    $0xc
402436:	55                   	push   %ebp
402437:	8b ec                	mov    %esp,%ebp
402439:	8b 4d 08             	mov    0x8(%ebp),%ecx
40243c:	83 ca ff             	or     $0xffffffff,%edx
40243f:	8b 45 10             	mov    0x10(%ebp),%eax
402442:	53                   	push   %ebx
402443:	56                   	push   %esi
402444:	33 db                	xor    %ebx,%ebx
402446:	8b f3                	mov    %ebx,%esi
402448:	57                   	push   %edi
402449:	8b f8                	mov    %eax,%edi
40244b:	39 19                	cmp    %ebx,(%ecx)
40244d:	74 1c                	je     0x40246b
40244f:	ff 31                	push   (%ecx)
402451:	e8 fb 16 00 00       	call   0x403b51
402456:	8b f0                	mov    %eax,%esi
402458:	83 ca ff             	or     $0xffffffff,%edx
40245b:	3b f2                	cmp    %edx,%esi
40245d:	75 0a                	jne    0x402469
40245f:	bb 57 00 07 80       	mov    $0x80070057,%ebx
402464:	e9 fe 00 00 00       	jmp    0x402567
402469:	8b c7                	mov    %edi,%eax
40246b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40246e:	85 c0                	test   %eax,%eax
402470:	75 4c                	jne    0x4024be
402472:	53                   	push   %ebx
402473:	53                   	push   %ebx
402474:	53                   	push   %ebx
402475:	53                   	push   %ebx
402476:	52                   	push   %edx
402477:	51                   	push   %ecx
402478:	53                   	push   %ebx
402479:	ff 75 14             	push   0x14(%ebp)
40247c:	ff 15 00 b1 44 00    	call   *0x44b100
402482:	8b f8                	mov    %eax,%edi
402484:	85 ff                	test   %edi,%edi
402486:	75 33                	jne    0x4024bb
402488:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40248e:	0f b7 d8             	movzwl %ax,%ebx
402491:	81 cb 00 00 07 80    	or     $0x80070000,%ebx
402497:	85 c0                	test   %eax,%eax
402499:	0f 4e d8             	cmovle %eax,%ebx
40249c:	b8 05 40 00 80       	mov    $0x80004005,%eax
4024a1:	85 db                	test   %ebx,%ebx
4024a3:	0f 49 d8             	cmovns %eax,%ebx
4024a6:	53                   	push   %ebx
4024a7:	68 bc 01 00 00       	push   $0x1bc
4024ac:	68 90 b5 44 00       	push   $0x44b590
4024b1:	e8 1d 13 00 00       	call   0x4037d3
4024b6:	e9 ac 00 00 00       	jmp    0x402567
4024bb:	4f                   	dec    %edi
4024bc:	eb 0b                	jmp    0x4024c9
4024be:	33 d2                	xor    %edx,%edx
4024c0:	66 3b 14 41          	cmp    (%ecx,%eax,2),%dx
4024c4:	75 03                	jne    0x4024c9
4024c6:	8d 78 ff             	lea    -0x1(%eax),%edi
4024c9:	8d 47 01             	lea    0x1(%edi),%eax
4024cc:	3b f0                	cmp    %eax,%esi
4024ce:	73 44                	jae    0x402514
4024d0:	8b f0                	mov    %eax,%esi
4024d2:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
4024d8:	72 0a                	jb     0x4024e4
4024da:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
4024df:	e9 83 00 00 00       	jmp    0x402567
4024e4:	8b 45 08             	mov    0x8(%ebp),%eax
4024e7:	6a 01                	push   $0x1
4024e9:	56                   	push   %esi
4024ea:	39 18                	cmp    %ebx,(%eax)
4024ec:	74 09                	je     0x4024f7
4024ee:	ff 30                	push   (%eax)
4024f0:	e8 7d 15 00 00       	call   0x403a72
4024f5:	eb 05                	jmp    0x4024fc
4024f7:	e8 d8 13 00 00       	call   0x4038d4
4024fc:	8b c8                	mov    %eax,%ecx