4031a4:	0f 88 20 01 00 00    	js     0x4032ca
4031aa:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4031ad:	8b 45 fc             	mov    -0x4(%ebp),%eax
4031b0:	f6 45 10 02          	testb  $0x2,0x10(%ebp)
4031b4:	0f 84 f7 00 00 00    	je     0x4032b1
4031ba:	83 65 10 00          	andl   $0x0,0x10(%ebp)
4031be:	8b d3                	mov    %ebx,%edx
4031c0:	85 c0                	test   %eax,%eax
4031c2:	0f 45 d0             	cmovne %eax,%edx
4031c5:	3b cf                	cmp    %edi,%ecx
4031c7:	8d 45 f8             	lea    -0x8(%ebp),%eax
4031ca:	89 55 0c             	mov    %edx,0xc(%ebp)
4031cd:	0f 47 f9             	cmova  %ecx,%edi
4031d0:	57                   	push   %edi
4031d1:	50                   	push   %eax
4031d2:	e8 07 ed ff ff       	call   0x401ede
4031d7:	8b f0                	mov    %eax,%esi
4031d9:	85 f6                	test   %esi,%esi
4031db:	0f 88 e9 00 00 00    	js     0x4032ca
4031e1:	8d 45 10             	lea    0x10(%ebp),%eax
4031e4:	50                   	push   %eax
4031e5:	ff 75 f8             	push   -0x8(%ebp)
4031e8:	57                   	push   %edi
4031e9:	ff 75 0c             	push   0xc(%ebp)
4031ec:	ff 15 24 b1 44 00    	call   *0x44b124
4031f2:	85 c0                	test   %eax,%eax
4031f4:	75 29                	jne    0x40321f
4031f6:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4031fc:	0f b7 f0             	movzwl %ax,%esi
4031ff:	81 ce 00 00 07 80    	or     $0x80070000,%esi
403205:	85 c0                	test   %eax,%eax
403207:	0f 4e f0             	cmovle %eax,%esi
40320a:	b8 05 40 00 80       	mov    $0x80004005,%eax
40320f:	85 f6                	test   %esi,%esi
403211:	0f 49 f0             	cmovns %eax,%esi
403214:	56                   	push   %esi
403215:	68 39 01 00 00       	push   $0x139
40321a:	e9 d6 fe ff ff       	jmp    0x4030f5
40321f:	3b f8                	cmp    %eax,%edi
403221:	73 73                	jae    0x403296
403223:	3d 04 01 00 00       	cmp    $0x104,%eax
403228:	8d 78 07             	lea    0x7(%eax),%edi
40322b:	0f 42 f8             	cmovb  %eax,%edi
40322e:	8d 45 f8             	lea    -0x8(%ebp),%eax
403231:	57                   	push   %edi
403232:	50                   	push   %eax
403233:	e8 a6 ec ff ff       	call   0x401ede
403238:	8b f0                	mov    %eax,%esi
40323a:	85 f6                	test   %esi,%esi
40323c:	0f 88 88 00 00 00    	js     0x4032ca
403242:	8d 45 10             	lea    0x10(%ebp),%eax
403245:	50                   	push   %eax
403246:	ff 75 f8             	push   -0x8(%ebp)
403249:	57                   	push   %edi
40324a:	ff 75 0c             	push   0xc(%ebp)
40324d:	ff 15 24 b1 44 00    	call   *0x44b124
403253:	85 c0                	test   %eax,%eax
403255:	75 29                	jne    0x403280
403257:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40325d:	0f b7 f0             	movzwl %ax,%esi
403260:	81 ce 00 00 07 80    	or     $0x80070000,%esi
403266:	85 c0                	test   %eax,%eax
403268:	0f 4e f0             	cmovle %eax,%esi
40326b:	b8 05 40 00 80       	mov    $0x80004005,%eax
403270:	85 f6                	test   %esi,%esi
403272:	0f 49 f0             	cmovns %eax,%esi
403275:	56                   	push   %esi
403276:	68 44 01 00 00       	push   $0x144
40327b:	e9 75 fe ff ff       	jmp    0x4030f5
403280:	3b f8                	cmp    %eax,%edi
403282:	73 12                	jae    0x403296
403284:	b8 7a 00 07 80       	mov    $0x8007007a,%eax
403289:	50                   	push   %eax
40328a:	8b f0                	mov    %eax,%esi
40328c:	68 49 01 00 00       	push   $0x149
403291:	e9 5f fe ff ff       	jmp    0x4030f5
403296:	3d 04 01 00 00       	cmp    $0x104,%eax
40329b:	76 0f                	jbe    0x4032ac
40329d:	8d 45 f8             	lea    -0x8(%ebp),%eax
4032a0:	50                   	push   %eax
4032a1:	e8 ed 02 00 00       	call   0x403593
4032a6:	8b f0                	mov    %eax,%esi
4032a8:	85 f6                	test   %esi,%esi
4032aa:	78 1e                	js     0x4032ca
4032ac:	8b 45 f8             	mov    -0x8(%ebp),%eax
4032af:	eb 07                	jmp    0x4032b8
4032b1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4032b5:	89 45 f8             	mov    %eax,-0x8(%ebp)
4032b8:	85 c0                	test   %eax,%eax
4032ba:	6a 00                	push   $0x0
4032bc:	0f 45 d8             	cmovne %eax,%ebx
4032bf:	53                   	push   %ebx
4032c0:	ff 75 08             	push   0x8(%ebp)
4032c3:	e8 dd ee ff ff       	call   0x4021a5
4032c8:	8b f0                	mov    %eax,%esi
4032ca:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
4032ce:	74 08                	je     0x4032d8
4032d0:	ff 75 f8             	push   -0x8(%ebp)
4032d3:	e8 17 22 04 00       	call   0x4454ef
4032d8:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4032dc:	74 08                	je     0x4032e6
4032de:	ff 75 fc             	push   -0x4(%ebp)
4032e1:	e8 09 22 04 00       	call   0x4454ef
4032e6:	5f                   	pop    %edi
4032e7:	8b c6                	mov    %esi,%eax
4032e9:	5e                   	pop    %esi
4032ea:	5b                   	pop    %ebx
4032eb:	8b e5                	mov    %ebp,%esp
4032ed:	5d                   	pop    %ebp
4032ee:	c2 0c 00             	ret    $0xc
4032f1:	55                   	push   %ebp
4032f2:	8b ec                	mov    %esp,%ebp
4032f4:	8b 45 08             	mov    0x8(%ebp),%eax
4032f7:	85 c0                	test   %eax,%eax
4032f9:	74 3f                	je     0x40333a
4032fb:	0f b7 08             	movzwl (%eax),%ecx
4032fe:	33 d2                	xor    %edx,%edx
403300:	66 85 c9             	test   %cx,%cx
403303:	74 33                	je     0x403338
403305:	56                   	push   %esi
403306:	6a 5c                	push   $0x5c
403308:	5e                   	pop    %esi
403309:	66 3b f1             	cmp    %cx,%si
40330c:	74 1c                	je     0x40332a
40330e:	6a 2f                	push   $0x2f
403310:	5e                   	pop    %esi
403311:	66 3b f1             	cmp    %cx,%si
403314:	74 14                	je     0x40332a
403316:	6a 3a                	push   $0x3a
403318:	5e                   	pop    %esi
403319:	66 3b f1             	cmp    %cx,%si
40331c:	74 0c                	je     0x40332a
40331e:	6a 2e                	push   $0x2e
403320:	5e                   	pop    %esi
403321:	66 3b f1             	cmp    %cx,%si
403324:	75 06                	jne    0x40332c
403326:	8b d0                	mov    %eax,%edx
403328:	eb 02                	jmp    0x40332c
40332a:	33 d2                	xor    %edx,%edx
40332c:	83 c0 02             	add    $0x2,%eax
40332f:	0f b7 08             	movzwl (%eax),%ecx
403332:	66 85 c9             	test   %cx,%cx
403335:	75 cf                	jne    0x403306
403337:	5e                   	pop    %esi
403338:	8b c2                	mov    %edx,%eax
40333a:	5d                   	pop    %ebp
40333b:	c2 04 00             	ret    $0x4
40333e:	55                   	push   %ebp
40333f:	8b ec                	mov    %esp,%ebp
403341:	8b 4d 08             	mov    0x8(%ebp),%ecx
403344:	85 c9                	test   %ecx,%ecx
403346:	75 04                	jne    0x40334c
403348:	33 c0                	xor    %eax,%eax
40334a:	eb 3f                	jmp    0x40338b
40334c:	0f b7 01             	movzwl (%ecx),%eax
40334f:	8b d1                	mov    %ecx,%edx
403351:	56                   	push   %esi
403352:	8b f1                	mov    %ecx,%esi
403354:	66 85 c0             	test   %ax,%ax
403357:	74 2f                	je     0x403388
403359:	57                   	push   %edi
40335a:	6a 5c                	push   $0x5c
40335c:	5f                   	pop    %edi
40335d:	66 3b f8             	cmp    %ax,%di
403360:	74 17                	je     0x403379
403362:	6a 2f                	push   $0x2f
403364:	5f                   	pop    %edi
403365:	66 3b f8             	cmp    %ax,%di
403368:	74 0f                	je     0x403379
40336a:	6a 3a                	push   $0x3a
40336c:	5f                   	pop    %edi
40336d:	66 3b f8             	cmp    %ax,%di
403370:	75 0a                	jne    0x40337c
403372:	8d 41 02             	lea    0x2(%ecx),%eax
403375:	3b d0                	cmp    %eax,%edx
403377:	75 03                	jne    0x40337c
403379:	8d 72 02             	lea    0x2(%edx),%esi
40337c:	83 c2 02             	add    $0x2,%edx
40337f:	0f b7 02             	movzwl (%edx),%eax
403382:	66 85 c0             	test   %ax,%ax
403385:	75 d3                	jne    0x40335a
403387:	5f                   	pop    %edi
403388:	8b c6                	mov    %esi,%eax
40338a:	5e                   	pop    %esi
40338b:	5d                   	pop    %ebp
40338c:	c2 04 00             	ret    $0x4
40338f:	55                   	push   %ebp
403390:	8b ec                	mov    %esp,%ebp
403392:	51                   	push   %ecx
403393:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403397:	8d 45 fc             	lea    -0x4(%ebp),%eax
40339a:	56                   	push   %esi
40339b:	8b 75 08             	mov    0x8(%ebp),%esi
40339e:	50                   	push   %eax
40339f:	ff 75 0c             	push   0xc(%ebp)
4033a2:	56                   	push   %esi
4033a3:	e8 af e8 ff ff       	call   0x401c57
4033a8:	85 c0                	test   %eax,%eax
4033aa:	78 24                	js     0x4033d0
4033ac:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4033af:	3b 4d 0c             	cmp    0xc(%ebp),%ecx
4033b2:	72 07                	jb     0x4033bb
4033b4:	b8 7a 00 07 80       	mov    $0x8007007a,%eax
4033b9:	eb 15                	jmp    0x4033d0
4033bb:	6a 5c                	push   $0x5c
4033bd:	5a                   	pop    %edx
4033be:	66 3b 54 4e fe       	cmp    -0x2(%esi,%ecx,2),%dx
4033c3:	74 0b                	je     0x4033d0
4033c5:	66 89 14 4e          	mov    %dx,(%esi,%ecx,2)
4033c9:	33 d2                	xor    %edx,%edx
4033cb:	66 89 54 4e 02       	mov    %dx,0x2(%esi,%ecx,2)
4033d0:	5e                   	pop    %esi
4033d1:	8b e5                	mov    %ebp,%esp
4033d3:	5d                   	pop    %ebp
4033d4:	c2 08 00             	ret    $0x8
4033d7:	55                   	push   %ebp
4033d8:	8b ec                	mov    %esp,%ebp
4033da:	53                   	push   %ebx
4033db:	8b 5d 08             	mov    0x8(%ebp),%ebx
4033de:	56                   	push   %esi
4033df:	57                   	push   %edi
4033e0:	bf 04 01 00 00       	mov    $0x104,%edi
4033e5:	57                   	push   %edi
4033e6:	53                   	push   %ebx
4033e7:	e8 f2 ea ff ff       	call   0x401ede
4033ec:	8b f0                	mov    %eax,%esi
4033ee:	85 f6                	test   %esi,%esi
4033f0:	78 4b                	js     0x40343d
4033f2:	57                   	push   %edi
4033f3:	ff 33                	push   (%ebx)
4033f5:	ff 75 0c             	push   0xc(%ebp)
4033f8:	ff 15 10 b1 44 00    	call   *0x44b110
4033fe:	85 c0                	test   %eax,%eax
403400:	74 0d                	je     0x40340f
403402:	3b c7                	cmp    %edi,%eax
403404:	75 05                	jne    0x40340b
403406:	8d 78 01             	lea    0x1(%eax),%edi
403409:	eb da                	jmp    0x4033e5
40340b:	33 f6                	xor    %esi,%esi
40340d:	eb 2e                	jmp    0x40343d
40340f:	ff 15 e8 b0 44 00    	call   *0x44b0e8
403415:	0f b7 f0             	movzwl %ax,%esi
403418:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40341e:	85 c0                	test   %eax,%eax
403420:	0f 4e f0             	cmovle %eax,%esi
403423:	b8 05 40 00 80       	mov    $0x80004005,%eax
403428:	85 f6                	test   %esi,%esi
40342a:	0f 49 f0             	cmovns %eax,%esi
40342d:	56                   	push   %esi
40342e:	68 d4 01 00 00       	push   $0x1d4
403433:	68 64 b7 44 00       	push   $0x44b764
403438:	e8 96 03 00 00       	call   0x4037d3
40343d:	5f                   	pop    %edi
40343e:	8b c6                	mov    %esi,%eax
403440:	5e                   	pop    %esi
403441:	5b                   	pop    %ebx
403442:	5d                   	pop    %ebp
403443:	c2 08 00             	ret    $0x8
403446:	55                   	push   %ebp
403447:	8b ec                	mov    %esp,%ebp
403449:	8b 55 08             	mov    0x8(%ebp),%edx
40344c:	83 c9 ff             	or     $0xffffffff,%ecx
40344f:	56                   	push   %esi
403450:	57                   	push   %edi
403451:	8b f2                	mov    %edx,%esi
403453:	0f b7 3a             	movzwl (%edx),%edi
403456:	66 85 ff             	test   %di,%di
403459:	74 61                	je     0x4034bc
40345b:	53                   	push   %ebx
40345c:	8b c7                	mov    %edi,%eax
40345e:	33 db                	xor    %ebx,%ebx
403460:	c7 45 08 5c 00 00 00 	movl   $0x5c,0x8(%ebp)
403467:	66 39 45 08          	cmp    %ax,0x8(%ebp)
40346b:	74 21                	je     0x40348e
40346d:	c7 45 08 2f 00 00 00 	movl   $0x2f,0x8(%ebp)
403474:	66 39 45 08          	cmp    %ax,0x8(%ebp)
403478:	74 14                	je     0x40348e
40347a:	c7 45 08 3a 00 00 00 	movl   $0x3a,0x8(%ebp)
403481:	66 39 45 08          	cmp    %ax,0x8(%ebp)
403485:	75 0c                	jne    0x403493
403487:	8d 42 02             	lea    0x2(%edx),%eax
40348a:	3b f0                	cmp    %eax,%esi
40348c:	75 05                	jne    0x403493
40348e:	8b cb                	mov    %ebx,%ecx
403490:	d1 f9                	sar    $1,%ecx
403492:	41                   	inc    %ecx
403493:	83 c6 02             	add    $0x2,%esi
403496:	83 c3 02             	add    $0x2,%ebx
403499:	0f b7 06             	movzwl (%esi),%eax
40349c:	66 85 c0             	test   %ax,%ax
40349f:	75 bf                	jne    0x403460
4034a1:	5b                   	pop    %ebx
4034a2:	83 f9 ff             	cmp    $0xffffffff,%ecx
4034a5:	74 15                	je     0x4034bc
4034a7:	83 ff 22             	cmp    $0x22,%edi
4034aa:	75 04                	jne    0x4034b0
4034ac:	83 c2 02             	add    $0x2,%edx
4034af:	49                   	dec    %ecx
4034b0:	51                   	push   %ecx
4034b1:	52                   	push   %edx
4034b2:	ff 75 0c             	push   0xc(%ebp)
4034b5:	e8 eb ec ff ff       	call   0x4021a5
4034ba:	eb 03                	jmp    0x4034bf
4034bc:	33 c0                	xor    %eax,%eax
4034be:	40                   	inc    %eax
4034bf:	5f                   	pop    %edi
4034c0:	5e                   	pop    %esi
4034c1:	5d                   	pop    %ebp
4034c2:	c2 08 00             	ret    $0x8
4034c5:	55                   	push   %ebp
4034c6:	8b ec                	mov    %esp,%ebp
4034c8:	56                   	push   %esi
4034c9:	8b 75 0c             	mov    0xc(%ebp),%esi
4034cc:	68 04 01 00 00       	push   $0x104
4034d1:	56                   	push   %esi
4034d2:	e8 07 ea ff ff       	call   0x401ede
4034d7:	85 c0                	test   %eax,%eax
4034d9:	78 1a                	js     0x4034f5
4034db:	ff 36                	push   (%esi)
4034dd:	33 c0                	xor    %eax,%eax
4034df:	50                   	push   %eax
4034e0:	50                   	push   %eax
4034e1:	ff 75 08             	push   0x8(%ebp)
4034e4:	50                   	push   %eax
4034e5:	ff 15 3c b3 44 00    	call   *0x44b33c
4034eb:	85 c0                	test   %eax,%eax
4034ed:	78 06                	js     0x4034f5
4034ef:	56                   	push   %esi
4034f0:	e8 39 f6 ff ff       	call   0x402b2e
4034f5:	5e                   	pop    %esi
4034f6:	5d                   	pop    %ebp
4034f7:	c2 08 00             	ret    $0x8
4034fa:	55                   	push   %ebp
4034fb:	8b ec                	mov    %esp,%ebp
4034fd:	8b 55 08             	mov    0x8(%ebp),%edx
403500:	8b ca                	mov    %edx,%ecx
403502:	56                   	push   %esi
403503:	33 f6                	xor    %esi,%esi
403505:	8b c6                	mov    %esi,%eax
403507:	66 39 32             	cmp    %si,(%edx)
40350a:	74 48                	je     0x403554
40350c:	53                   	push   %ebx
40350d:	57                   	push   %edi
40350e:	66 39 71 02          	cmp    %si,0x2(%ecx)
403512:	74 1f                	je     0x403533
403514:	0f b7 19             	movzwl (%ecx),%ebx
403517:	c7 45 08 5c 00 00 00 	movl   $0x5c,0x8(%ebp)
40351e:	66 39 5d 08          	cmp    %bx,0x8(%ebp)
403522:	74 0d                	je     0x403531
403524:	c7 45 08 2f 00 00 00 	movl   $0x2f,0x8(%ebp)