40419f:	e8 12 05 00 00       	call   0x4046b6
4041a4:	66 89 38             	mov    %di,(%eax)
4041a7:	66 8b c7             	mov    %di,%ax
4041aa:	e9 fb 00 00 00       	jmp    0x4042aa
4041af:	8b 46 50             	mov    0x50(%esi),%eax
4041b2:	3b c3                	cmp    %ebx,%eax
4041b4:	75 09                	jne    0x4041bf
4041b6:	66 0d ff ff          	or     $0xffff,%ax
4041ba:	e9 eb 00 00 00       	jmp    0x4042aa
4041bf:	39 5e 38             	cmp    %ebx,0x38(%esi)
4041c2:	75 14                	jne    0x4041d8
4041c4:	50                   	push   %eax
4041c5:	57                   	push   %edi
4041c6:	e8 be 28 00 00       	call   0x406a89
4041cb:	59                   	pop    %ecx
4041cc:	66 3d ff ff          	cmp    $0xffff,%ax
4041d0:	59                   	pop    %ecx
4041d1:	8b c7                	mov    %edi,%eax
4041d3:	e9 8a 00 00 00       	jmp    0x404262
4041d8:	ff 35 68 d2 40 00    	push   0x40d268
4041de:	8b 4e 44             	mov    0x44(%esi),%ecx
4041e1:	89 7d fc             	mov    %edi,-0x4(%ebp)
4041e4:	53                   	push   %ebx
4041e5:	e8 8d f3 ff ff       	call   0x403577
4041ea:	8b 4e 44             	mov    0x44(%esi),%ecx
4041ed:	53                   	push   %ebx
4041ee:	6a 08                	push   $0x8
4041f0:	e8 29 f3 ff ff       	call   0x40351e
4041f5:	8b 7e 44             	mov    0x44(%esi),%edi
4041f8:	8b cf                	mov    %edi,%ecx
4041fa:	e8 64 f5 ff ff       	call   0x403763
4041ff:	8b 5e 44             	mov    0x44(%esi),%ebx
404202:	8b 47 04             	mov    0x4(%edi),%eax
404205:	8b cb                	mov    %ebx,%ecx
404207:	89 45 f8             	mov    %eax,-0x8(%ebp)
40420a:	e8 54 f5 ff ff       	call   0x403763
40420f:	8b 45 f8             	mov    -0x8(%ebp),%eax
404212:	8b 4f 08             	mov    0x8(%edi),%ecx
404215:	8b 5b 04             	mov    0x4(%ebx),%ebx
404218:	03 c8                	add    %eax,%ecx
40421a:	f7 d8                	neg    %eax
40421c:	1b c0                	sbb    %eax,%eax
40421e:	8d 7d f0             	lea    -0x10(%ebp),%edi
404221:	23 c1                	and    %ecx,%eax
404223:	57                   	push   %edi
404224:	8b 4e 38             	mov    0x38(%esi),%ecx
404227:	50                   	push   %eax
404228:	8d 45 f4             	lea    -0xc(%ebp),%eax
40422b:	53                   	push   %ebx
40422c:	8b 11                	mov    (%ecx),%edx
40422e:	50                   	push   %eax
40422f:	8d 45 fe             	lea    -0x2(%ebp),%eax
404232:	50                   	push   %eax
404233:	8d 45 fc             	lea    -0x4(%ebp),%eax
404236:	50                   	push   %eax
404237:	8d 46 40             	lea    0x40(%esi),%eax
40423a:	50                   	push   %eax
40423b:	ff 52 14             	call   *0x14(%edx)
40423e:	83 e8 00             	sub    $0x0,%eax
404241:	74 2f                	je     0x404272
404243:	48                   	dec    %eax
404244:	74 20                	je     0x404266
404246:	48                   	dec    %eax
404247:	48                   	dec    %eax
404248:	0f 85 68 ff ff ff    	jne    0x4041b6
40424e:	ff 76 50             	push   0x50(%esi)
404251:	ff 75 fc             	push   -0x4(%ebp)
404254:	e8 30 28 00 00       	call   0x406a89
404259:	59                   	pop    %ecx
40425a:	66 3d ff ff          	cmp    $0xffff,%ax
40425e:	8b 45 08             	mov    0x8(%ebp),%eax
404261:	59                   	pop    %ecx
404262:	75 46                	jne    0x4042aa
404264:	eb 3f                	jmp    0x4042a5
404266:	8d 45 fc             	lea    -0x4(%ebp),%eax
404269:	39 45 f4             	cmp    %eax,-0xc(%ebp)
40426c:	0f 84 44 ff ff ff    	je     0x4041b6
404272:	8b 5e 44             	mov    0x44(%esi),%ebx
404275:	8b cb                	mov    %ebx,%ecx
404277:	e8 e7 f4 ff ff       	call   0x403763
40427c:	8b 7d f0             	mov    -0x10(%ebp),%edi
40427f:	2b 7b 04             	sub    0x4(%ebx),%edi
404282:	8b 5e 44             	mov    0x44(%esi),%ebx
404285:	8b cb                	mov    %ebx,%ecx
404287:	e8 d7 f4 ff ff       	call   0x403763
40428c:	ff 76 50             	push   0x50(%esi)
40428f:	8b 5b 04             	mov    0x4(%ebx),%ebx
404292:	6a 01                	push   $0x1
404294:	57                   	push   %edi
404295:	53                   	push   %ebx
404296:	e8 fa 1d 00 00       	call   0x406095
40429b:	83 c4 10             	add    $0x10,%esp
40429e:	3b c7                	cmp    %edi,%eax
4042a0:	8b 45 08             	mov    0x8(%ebp),%eax
4042a3:	74 05                	je     0x4042aa
4042a5:	b8 ff ff 00 00       	mov    $0xffff,%eax
4042aa:	5f                   	pop    %edi
4042ab:	5e                   	pop    %esi
4042ac:	5b                   	pop    %ebx
4042ad:	c9                   	leave
4042ae:	c2 04 00             	ret    $0x4
4042b1:	53                   	push   %ebx
4042b2:	56                   	push   %esi
4042b3:	8b f1                	mov    %ecx,%esi
4042b5:	57                   	push   %edi
4042b6:	8b 46 1c             	mov    0x1c(%esi),%eax
4042b9:	8b 00                	mov    (%eax),%eax
4042bb:	85 c0                	test   %eax,%eax
4042bd:	74 2d                	je     0x4042ec
4042bf:	8b 4e 0c             	mov    0xc(%esi),%ecx
4042c2:	39 01                	cmp    %eax,(%ecx)
4042c4:	73 26                	jae    0x4042ec
4042c6:	8b 7c 24 10          	mov    0x10(%esp),%edi
4042ca:	66 81 ff ff ff       	cmp    $0xffff,%di
4042cf:	74 06                	je     0x4042d7
4042d1:	66 39 78 fe          	cmp    %di,-0x2(%eax)
4042d5:	75 19                	jne    0x4042f0
4042d7:	8b ce                	mov    %esi,%ecx
4042d9:	e8 a3 03 00 00       	call   0x404681
4042de:	66 8b c7             	mov    %di,%ax
4042e1:	66 40                	inc    %ax
4042e3:	66 f7 d8             	neg    %ax
4042e6:	1b c0                	sbb    %eax,%eax
4042e8:	23 c7                	and    %edi,%eax
4042ea:	eb 76                	jmp    0x404362
4042ec:	8b 7c 24 10          	mov    0x10(%esp),%edi
4042f0:	8b 46 50             	mov    0x50(%esi),%eax
4042f3:	85 c0                	test   %eax,%eax
4042f5:	74 67                	je     0x40435e
4042f7:	66 81 ff ff ff       	cmp    $0xffff,%di
4042fc:	74 60                	je     0x40435e
4042fe:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
404302:	75 18                	jne    0x40431c
404304:	50                   	push   %eax
404305:	57                   	push   %edi
404306:	e8 a1 28 00 00       	call   0x406bac
40430b:	59                   	pop    %ecx
40430c:	66 3d ff ff          	cmp    $0xffff,%ax
404310:	59                   	pop    %ecx
404311:	8b c7                	mov    %edi,%eax
404313:	75 4d                	jne    0x404362
404315:	b8 ff ff 00 00       	mov    $0xffff,%eax
40431a:	eb 46                	jmp    0x404362
40431c:	8b 7e 44             	mov    0x44(%esi),%edi
40431f:	8b 5f 08             	mov    0x8(%edi),%ebx
404322:	85 db                	test   %ebx,%ebx
404324:	76 38                	jbe    0x40435e
404326:	8b cf                	mov    %edi,%ecx
404328:	e8 36 f4 ff ff       	call   0x403763
40432d:	8b 7f 04             	mov    0x4(%edi),%edi
404330:	53                   	push   %ebx
404331:	ff 76 50             	push   0x50(%esi)
404334:	57                   	push   %edi
404335:	e8 3e f6 ff ff       	call   0x403978
40433a:	83 c4 0c             	add    $0xc,%esp
40433d:	84 c0                	test   %al,%al
40433f:	74 1d                	je     0x40435e
404341:	ff 35 68 d2 40 00    	push   0x40d268
404347:	8b 4e 44             	mov    0x44(%esi),%ecx
40434a:	6a 00                	push   $0x0
40434c:	e8 26 f2 ff ff       	call   0x403577
404351:	8b 46 3c             	mov    0x3c(%esi),%eax
404354:	89 46 40             	mov    %eax,0x40(%esi)
404357:	66 8b 44 24 10       	mov    0x10(%esp),%ax
40435c:	eb 04                	jmp    0x404362
40435e:	66 0d ff ff          	or     $0xffff,%ax
404362:	5f                   	pop    %edi
404363:	5e                   	pop    %esi
404364:	5b                   	pop    %ebx
404365:	c2 04 00             	ret    $0x4
404368:	56                   	push   %esi
404369:	8b f1                	mov    %ecx,%esi
40436b:	8b 46 1c             	mov    0x1c(%esi),%eax
40436e:	8b 00                	mov    (%eax),%eax
404370:	85 c0                	test   %eax,%eax
404372:	74 11                	je     0x404385
404374:	8b 4e 2c             	mov    0x2c(%esi),%ecx
404377:	8b 09                	mov    (%ecx),%ecx
404379:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
40437c:	3b c1                	cmp    %ecx,%eax
40437e:	73 05                	jae    0x404385
404380:	66 8b 00             	mov    (%eax),%ax
404383:	5e                   	pop    %esi
404384:	c3                   	ret
404385:	57                   	push   %edi
404386:	8b 3e                	mov    (%esi),%edi
404388:	8b ce                	mov    %esi,%ecx
40438a:	ff 57 14             	call   *0x14(%edi)
40438d:	50                   	push   %eax
40438e:	8b ce                	mov    %esi,%ecx
404390:	ff 57 08             	call   *0x8(%edi)
404393:	5f                   	pop    %edi
404394:	5e                   	pop    %esi
404395:	c3                   	ret
404396:	55                   	push   %ebp
404397:	8b ec                	mov    %esp,%ebp
404399:	83 ec 10             	sub    $0x10,%esp
40439c:	53                   	push   %ebx
40439d:	56                   	push   %esi
40439e:	8b f1                	mov    %ecx,%esi
4043a0:	57                   	push   %edi
4043a1:	8b 46 1c             	mov    0x1c(%esi),%eax
4043a4:	8b 00                	mov    (%eax),%eax
4043a6:	85 c0                	test   %eax,%eax
4043a8:	74 1b                	je     0x4043c5
4043aa:	8b 4e 2c             	mov    0x2c(%esi),%ecx
4043ad:	8b 09                	mov    (%ecx),%ecx
4043af:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
4043b2:	3b c1                	cmp    %ecx,%eax
4043b4:	73 0f                	jae    0x4043c5
4043b6:	8b ce                	mov    %esi,%ecx
4043b8:	e8 d5 02 00 00       	call   0x404692
4043bd:	66 8b 00             	mov    (%eax),%ax
4043c0:	e9 ea 00 00 00       	jmp    0x4044af
4043c5:	8b 46 50             	mov    0x50(%esi),%eax
4043c8:	85 c0                	test   %eax,%eax
4043ca:	75 09                	jne    0x4043d5
4043cc:	66 0d ff ff          	or     $0xffff,%ax
4043d0:	e9 da 00 00 00       	jmp    0x4044af
4043d5:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
4043d9:	75 1b                	jne    0x4043f6
4043db:	50                   	push   %eax
4043dc:	e8 e2 28 00 00       	call   0x406cc3
4043e1:	66 3d ff ff          	cmp    $0xffff,%ax
4043e5:	59                   	pop    %ecx
4043e6:	0f 85 c3 00 00 00    	jne    0x4044af
4043ec:	b8 ff ff 00 00       	mov    $0xffff,%eax
4043f1:	e9 b9 00 00 00       	jmp    0x4044af
4043f6:	8b 46 40             	mov    0x40(%esi),%eax
4043f9:	8b 4e 44             	mov    0x44(%esi),%ecx
4043fc:	89 46 3c             	mov    %eax,0x3c(%esi)
4043ff:	ff 35 68 d2 40 00    	push   0x40d268
404405:	6a 00                	push   $0x0
404407:	e8 6b f1 ff ff       	call   0x403577
40440c:	ff 76 50             	push   0x50(%esi)
40440f:	e8 8c 1e 00 00       	call   0x4062a0
404414:	83 f8 ff             	cmp    $0xffffffff,%eax
404417:	59                   	pop    %ecx
404418:	74 b2                	je     0x4043cc
40441a:	8b 4e 44             	mov    0x44(%esi),%ecx
40441d:	50                   	push   %eax
40441e:	6a 01                	push   $0x1
404420:	e8 f9 f0 ff ff       	call   0x40351e
404425:	8b 7e 44             	mov    0x44(%esi),%edi
404428:	8b 46 3c             	mov    0x3c(%esi),%eax
40442b:	8b cf                	mov    %edi,%ecx
40442d:	89 46 40             	mov    %eax,0x40(%esi)
404430:	e8 2e f3 ff ff       	call   0x403763
404435:	8b 5e 44             	mov    0x44(%esi),%ebx
404438:	8b 47 04             	mov    0x4(%edi),%eax
40443b:	8b cb                	mov    %ebx,%ecx
40443d:	89 45 f8             	mov    %eax,-0x8(%ebp)
404440:	e8 1e f3 ff ff       	call   0x403763
404445:	8b 4f 08             	mov    0x8(%edi),%ecx
404448:	8b 45 f8             	mov    -0x8(%ebp),%eax
40444b:	8d 7d f4             	lea    -0xc(%ebp),%edi
40444e:	8b 5b 04             	mov    0x4(%ebx),%ebx
404451:	57                   	push   %edi
404452:	8d 7d 00             	lea    0x0(%ebp),%edi
404455:	03 c8                	add    %eax,%ecx
404457:	57                   	push   %edi
404458:	f7 d8                	neg    %eax
40445a:	8d 7d fe             	lea    -0x2(%ebp),%edi
40445d:	1b c0                	sbb    %eax,%eax
40445f:	57                   	push   %edi
404460:	8d 7d f0             	lea    -0x10(%ebp),%edi
404463:	23 c1                	and    %ecx,%eax
404465:	8b 4e 38             	mov    0x38(%esi),%ecx
404468:	57                   	push   %edi
404469:	50                   	push   %eax
40446a:	8d 46 40             	lea    0x40(%esi),%eax
40446d:	8b 11                	mov    (%ecx),%edx
40446f:	53                   	push   %ebx
404470:	50                   	push   %eax
404471:	ff 52 10             	call   *0x10(%edx)
404474:	83 e8 00             	sub    $0x0,%eax
404477:	74 32                	je     0x4044ab
404479:	48                   	dec    %eax
40447a:	74 90                	je     0x40440c
40447c:	48                   	dec    %eax
40447d:	48                   	dec    %eax
40447e:	0f 85 48 ff ff ff    	jne    0x4043cc
404484:	8b 46 44             	mov    0x44(%esi),%eax
404487:	83 78 08 02          	cmpl   $0x2,0x8(%eax)
40448b:	0f 82 7b ff ff ff    	jb     0x40440c
404491:	8b f0                	mov    %eax,%esi
404493:	8b ce                	mov    %esi,%ecx
404495:	e8 c9 f2 ff ff       	call   0x403763
40449a:	6a 02                	push   $0x2
40449c:	8d 45 fe             	lea    -0x2(%ebp),%eax
40449f:	ff 76 04             	push   0x4(%esi)
4044a2:	50                   	push   %eax
4044a3:	e8 b8 18 00 00       	call   0x405d60
4044a8:	83 c4 0c             	add    $0xc,%esp
4044ab:	66 8b 45 fe          	mov    -0x2(%ebp),%ax
4044af:	5f                   	pop    %edi
4044b0:	5e                   	pop    %esi
4044b1:	5b                   	pop    %ebx
4044b2:	c9                   	leave
4044b3:	c3                   	ret
4044b4:	55                   	push   %ebp
4044b5:	8b ec                	mov    %esp,%ebp
4044b7:	51                   	push   %ecx
4044b8:	51                   	push   %ecx
4044b9:	8b 45 14             	mov    0x14(%ebp),%eax
4044bc:	56                   	push   %esi
4044bd:	89 45 f8             	mov    %eax,-0x8(%ebp)
4044c0:	2b c0                	sub    %eax,%eax
4044c2:	03 45 0c             	add    0xc(%ebp),%eax
4044c5:	8b f1                	mov    %ecx,%esi
4044c7:	8b 4d 18             	mov    0x18(%ebp),%ecx
4044ca:	57                   	push   %edi
4044cb:	8b f8                	mov    %eax,%edi
4044cd:	8b 46 50             	mov    0x50(%esi),%eax
4044d0:	85 c0                	test   %eax,%eax
4044d2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4044d5:	74 70                	je     0x404547
4044d7:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4044da:	51                   	push   %ecx
4044db:	50                   	push   %eax
4044dc:	e8 cb 1e 00 00       	call   0x4063ac
4044e1:	59                   	pop    %ecx
4044e2:	85 c0                	test   %eax,%eax
4044e4:	59                   	pop    %ecx
4044e5:	75 60                	jne    0x404547
4044e7:	85 ff                	test   %edi,%edi
4044e9:	74 12                	je     0x4044fd
4044eb:	6a 01                	push   $0x1
4044ed:	57                   	push   %edi
4044ee:	ff 76 50             	push   0x50(%esi)
4044f1:	e8 fd 1d 00 00       	call   0x4062f3
4044f6:	83 c4 0c             	add    $0xc,%esp
4044f9:	85 c0                	test   %eax,%eax
4044fb:	75 4a                	jne    0x404547
4044fd:	8d 45 f8             	lea    -0x8(%ebp),%eax
404500:	50                   	push   %eax
404501:	ff 76 50             	push   0x50(%esi)
404504:	e8 c8 1d 00 00       	call   0x4062d1
404509:	59                   	pop    %ecx
40450a:	85 c0                	test   %eax,%eax
40450c:	59                   	pop    %ecx
40450d:	75 38                	jne    0x404547
40450f:	8b 4e 44             	mov    0x44(%esi),%ecx
404512:	85 c9                	test   %ecx,%ecx
404514:	74 13                	je     0x404529
404516:	8b 45 1c             	mov    0x1c(%ebp),%eax
404519:	89 46 40             	mov    %eax,0x40(%esi)
40451c:	ff 35 68 d2 40 00    	push   0x40d268
404522:	6a 00                	push   $0x0
404524:	e8 4e f0 ff ff       	call   0x403577