4040bb:	57                   	push   %edi
4040bc:	6a 08                	push   $0x8
4040be:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4040c1:	e8 96 fc ff ff       	call   0x403d5c
4040c6:	e9 3c ff ff ff       	jmp    0x404007
4040cb:	b3 01                	mov    $0x1,%bl
4040cd:	eb 8a                	jmp    0x404059
4040cf:	b0 01                	mov    $0x1,%al
4040d1:	e8 c8 27 00 00       	call   0x40689e
4040d6:	c3                   	ret
4040d7:	6a 54                	push   $0x54
4040d9:	b8 e6 5c 41 00       	mov    $0x415ce6,%eax
4040de:	e8 71 27 00 00       	call   0x406854
4040e3:	8b 7d 08             	mov    0x8(%ebp),%edi
4040e6:	66 81 ff ff ff       	cmp    $0xffff,%di
4040eb:	8b f1                	mov    %ecx,%esi
4040ed:	75 0b                	jne    0x4040fa
4040ef:	66 33 c0             	xor    %ax,%ax
4040f2:	e8 a7 27 00 00       	call   0x40689e
4040f7:	c2 04 00             	ret    $0x4
4040fa:	8b 46 24             	mov    0x24(%esi),%eax
4040fd:	8b 08                	mov    (%eax),%ecx
4040ff:	33 db                	xor    %ebx,%ebx
404101:	3b cb                	cmp    %ebx,%ecx
404103:	74 20                	je     0x404125
404105:	8b 46 34             	mov    0x34(%esi),%eax
404108:	8b 10                	mov    (%eax),%edx
40410a:	8d 14 51             	lea    (%ecx,%edx,2),%edx
40410d:	3b ca                	cmp    %edx,%ecx
40410f:	73 14                	jae    0x404125
404111:	ff 08                	decl   (%eax)
404113:	8b 76 24             	mov    0x24(%esi),%esi
404116:	8b 06                	mov    (%esi),%eax
404118:	8d 48 02             	lea    0x2(%eax),%ecx
40411b:	89 0e                	mov    %ecx,(%esi)
40411d:	66 89 38             	mov    %di,(%eax)
404120:	66 8b c7             	mov    %di,%ax
404123:	eb cd                	jmp    0x4040f2
404125:	8b 46 4c             	mov    0x4c(%esi),%eax
404128:	3b c3                	cmp    %ebx,%eax
40412a:	75 06                	jne    0x404132
40412c:	66 0d ff ff          	or     $0xffff,%ax
404130:	eb c0                	jmp    0x4040f2
404132:	39 5e 3c             	cmp    %ebx,0x3c(%esi)
404135:	75 17                	jne    0x40414e
404137:	50                   	push   %eax
404138:	57                   	push   %edi
404139:	e8 e0 f9 ff ff       	call   0x403b1e
40413e:	59                   	pop    %ecx
40413f:	84 c0                	test   %al,%al
404141:	59                   	pop    %ecx
404142:	0f b7 c7             	movzwl %di,%eax
404145:	75 ab                	jne    0x4040f2
404147:	b8 ff ff 00 00       	mov    $0xffff,%eax
40414c:	eb a4                	jmp    0x4040f2
40414e:	0f b7 c7             	movzwl %di,%eax
404151:	53                   	push   %ebx
404152:	6a 08                	push   $0x8
404154:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404157:	89 45 d0             	mov    %eax,-0x30(%ebp)
40415a:	e8 38 fe ff ff       	call   0x403f97
40415f:	8d 45 b8             	lea    -0x48(%ebp),%eax
404162:	50                   	push   %eax
404163:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404166:	89 5d fc             	mov    %ebx,-0x4(%ebp)
404169:	e8 6e fb ff ff       	call   0x403cdc
40416e:	8b c8                	mov    %eax,%ecx
404170:	e8 26 f5 ff ff       	call   0x40369b
404175:	8b 7d e8             	mov    -0x18(%ebp),%edi
404178:	8b d8                	mov    %eax,%ebx
40417a:	8d 45 b0             	lea    -0x50(%ebp),%eax
40417d:	50                   	push   %eax
40417e:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404181:	e8 56 fb ff ff       	call   0x403cdc
404186:	8b c8                	mov    %eax,%ecx
404188:	e8 0e f5 ff ff       	call   0x40369b
40418d:	8d 55 c8             	lea    -0x38(%ebp),%edx
404190:	03 fb                	add    %ebx,%edi
404192:	52                   	push   %edx
404193:	8d 5e 44             	lea    0x44(%esi),%ebx
404196:	e9 a4 00 00 00       	jmp    0x40423f
40419b:	83 f8 01             	cmp    $0x1,%eax
40419e:	0f 8f d6 00 00 00    	jg     0x40427a
4041a4:	8d 45 a8             	lea    -0x58(%ebp),%eax
4041a7:	50                   	push   %eax
4041a8:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4041ab:	e8 2c fb ff ff       	call   0x403cdc
4041b0:	8b c8                	mov    %eax,%ecx
4041b2:	e8 e4 f4 ff ff       	call   0x40369b
4041b7:	8b 7d c8             	mov    -0x38(%ebp),%edi
4041ba:	2b f8                	sub    %eax,%edi
4041bc:	74 26                	je     0x4041e4
4041be:	8d 45 a0             	lea    -0x60(%ebp),%eax
4041c1:	50                   	push   %eax
4041c2:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4041c5:	e8 12 fb ff ff       	call   0x403cdc
4041ca:	8b c8                	mov    %eax,%ecx
4041cc:	e8 ca f4 ff ff       	call   0x40369b
4041d1:	ff 76 4c             	push   0x4c(%esi)
4041d4:	57                   	push   %edi
4041d5:	6a 01                	push   $0x1
4041d7:	50                   	push   %eax
4041d8:	e8 f2 41 00 00       	call   0x4083cf
4041dd:	83 c4 10             	add    $0x10,%esp
4041e0:	3b f8                	cmp    %eax,%edi
4041e2:	75 7d                	jne    0x404261
4041e4:	8d 45 d0             	lea    -0x30(%ebp),%eax
4041e7:	39 45 c4             	cmp    %eax,-0x3c(%ebp)
4041ea:	c6 46 42 01          	movb   $0x1,0x42(%esi)
4041ee:	0f 85 a7 00 00 00    	jne    0x40429b
4041f4:	85 ff                	test   %edi,%edi
4041f6:	77 12                	ja     0x40420a
4041f8:	83 7d e8 20          	cmpl   $0x20,-0x18(%ebp)
4041fc:	73 63                	jae    0x404261
4041fe:	6a 00                	push   $0x0
404200:	6a 08                	push   $0x8
404202:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404205:	e8 52 fb ff ff       	call   0x403d5c
40420a:	8d 45 b8             	lea    -0x48(%ebp),%eax
40420d:	50                   	push   %eax
40420e:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404211:	e8 c6 fa ff ff       	call   0x403cdc
404216:	8b c8                	mov    %eax,%ecx
404218:	e8 7e f4 ff ff       	call   0x40369b
40421d:	8b 7d e8             	mov    -0x18(%ebp),%edi
404220:	89 45 c0             	mov    %eax,-0x40(%ebp)
404223:	8d 45 b0             	lea    -0x50(%ebp),%eax
404226:	50                   	push   %eax
404227:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40422a:	e8 ad fa ff ff       	call   0x403cdc
40422f:	8b c8                	mov    %eax,%ecx
404231:	e8 65 f4 ff ff       	call   0x40369b
404236:	8d 55 c8             	lea    -0x38(%ebp),%edx
404239:	52                   	push   %edx
40423a:	8b 55 c0             	mov    -0x40(%ebp),%edx
40423d:	03 fa                	add    %edx,%edi
40423f:	8b 4e 3c             	mov    0x3c(%esi),%ecx
404242:	57                   	push   %edi
404243:	50                   	push   %eax
404244:	8d 55 c4             	lea    -0x3c(%ebp),%edx
404247:	52                   	push   %edx
404248:	8d 55 d2             	lea    -0x2e(%ebp),%edx
40424b:	52                   	push   %edx
40424c:	8d 55 d0             	lea    -0x30(%ebp),%edx
40424f:	52                   	push   %edx
404250:	89 45 cc             	mov    %eax,-0x34(%ebp)
404253:	8b 01                	mov    (%ecx),%eax
404255:	53                   	push   %ebx
404256:	ff 50 14             	call   *0x14(%eax)
404259:	85 c0                	test   %eax,%eax
40425b:	0f 8d 3a ff ff ff    	jge    0x40419b
404261:	66 81 ce ff ff       	or     $0xffff,%si
404266:	6a 00                	push   $0x0
404268:	6a 01                	push   $0x1
40426a:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40426d:	e8 6e db ff ff       	call   0x401de0
404272:	66 8b c6             	mov    %si,%ax
404275:	e9 78 fe ff ff       	jmp    0x4040f2
40427a:	83 f8 03             	cmp    $0x3,%eax
40427d:	75 e2                	jne    0x404261
40427f:	ff 76 4c             	push   0x4c(%esi)
404282:	ff 75 d0             	push   -0x30(%ebp)
404285:	e8 94 f8 ff ff       	call   0x403b1e
40428a:	84 c0                	test   %al,%al
40428c:	0f b7 75 08          	movzwl 0x8(%ebp),%esi
404290:	59                   	pop    %ecx
404291:	59                   	pop    %ecx
404292:	75 d2                	jne    0x404266
404294:	be ff ff 00 00       	mov    $0xffff,%esi
404299:	eb cb                	jmp    0x404266
40429b:	66 8b 75 08          	mov    0x8(%ebp),%si
40429f:	eb c5                	jmp    0x404266
4042a1:	55                   	push   %ebp
4042a2:	8b ec                	mov    %esp,%ebp
4042a4:	51                   	push   %ecx
4042a5:	51                   	push   %ecx
4042a6:	53                   	push   %ebx
4042a7:	56                   	push   %esi
4042a8:	8b f1                	mov    %ecx,%esi
4042aa:	8b 46 20             	mov    0x20(%esi),%eax
4042ad:	57                   	push   %edi
4042ae:	8d 7e 40             	lea    0x40(%esi),%edi
4042b1:	33 db                	xor    %ebx,%ebx
4042b3:	39 38                	cmp    %edi,(%eax)
4042b5:	75 0f                	jne    0x4042c6
4042b7:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
4042bb:	75 09                	jne    0x4042c6
4042bd:	39 5e 3c             	cmp    %ebx,0x3c(%esi)
4042c0:	75 04                	jne    0x4042c6
4042c2:	83 6d 0c 02          	subl   $0x2,0xc(%ebp)
4042c6:	39 5e 4c             	cmp    %ebx,0x4c(%esi)
4042c9:	74 76                	je     0x404341
4042cb:	e8 ed fc ff ff       	call   0x403fbd
4042d0:	84 c0                	test   %al,%al
4042d2:	74 6d                	je     0x404341
4042d4:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
4042d7:	75 06                	jne    0x4042df
4042d9:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
4042dd:	74 15                	je     0x4042f4
4042df:	ff 75 10             	push   0x10(%ebp)
4042e2:	ff 75 0c             	push   0xc(%ebp)
4042e5:	ff 76 4c             	push   0x4c(%esi)
4042e8:	e8 61 42 00 00       	call   0x40854e
4042ed:	83 c4 0c             	add    $0xc,%esp
4042f0:	85 c0                	test   %eax,%eax
4042f2:	75 4d                	jne    0x404341
4042f4:	8d 45 f8             	lea    -0x8(%ebp),%eax
4042f7:	50                   	push   %eax
4042f8:	ff 76 4c             	push   0x4c(%esi)
4042fb:	e8 5c 41 00 00       	call   0x40845c
404300:	85 c0                	test   %eax,%eax
404302:	59                   	pop    %ecx
404303:	59                   	pop    %ecx
404304:	75 3b                	jne    0x404341
404306:	8b 46 20             	mov    0x20(%esi),%eax
404309:	39 38                	cmp    %edi,(%eax)
40430b:	75 1b                	jne    0x404328
40430d:	8b 4e 10             	mov    0x10(%esi),%ecx
404310:	89 39                	mov    %edi,(%ecx)
404312:	8b 4e 20             	mov    0x20(%esi),%ecx
404315:	8d 46 42             	lea    0x42(%esi),%eax
404318:	89 01                	mov    %eax,(%ecx)
40431a:	8b ce                	mov    %esi,%ecx
40431c:	2b c8                	sub    %eax,%ecx
40431e:	8b 46 30             	mov    0x30(%esi),%eax
404321:	83 c1 42             	add    $0x42,%ecx
404324:	d1 f9                	sar    $1,%ecx
404326:	89 08                	mov    %ecx,(%eax)
404328:	8b 45 08             	mov    0x8(%ebp),%eax
40432b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40432e:	89 48 08             	mov    %ecx,0x8(%eax)
404331:	8b 4d fc             	mov    -0x4(%ebp),%ecx
404334:	89 48 0c             	mov    %ecx,0xc(%eax)
404337:	8b 4e 44             	mov    0x44(%esi),%ecx
40433a:	89 18                	mov    %ebx,(%eax)
40433c:	89 48 10             	mov    %ecx,0x10(%eax)
40433f:	eb 14                	jmp    0x404355
404341:	8b 45 08             	mov    0x8(%ebp),%eax
404344:	8b 0d 10 76 41 00    	mov    0x417610,%ecx
40434a:	89 08                	mov    %ecx,(%eax)
40434c:	89 58 08             	mov    %ebx,0x8(%eax)
40434f:	89 58 0c             	mov    %ebx,0xc(%eax)
404352:	89 58 10             	mov    %ebx,0x10(%eax)
404355:	5f                   	pop    %edi
404356:	5e                   	pop    %esi
404357:	5b                   	pop    %ebx
404358:	c9                   	leave
404359:	c2 10 00             	ret    $0x10
40435c:	55                   	push   %ebp
40435d:	8b ec                	mov    %esp,%ebp
40435f:	51                   	push   %ecx
404360:	51                   	push   %ecx
404361:	8b 45 14             	mov    0x14(%ebp),%eax
404364:	56                   	push   %esi
404365:	57                   	push   %edi
404366:	8b f1                	mov    %ecx,%esi
404368:	89 45 f8             	mov    %eax,-0x8(%ebp)
40436b:	8b 45 18             	mov    0x18(%ebp),%eax
40436e:	33 ff                	xor    %edi,%edi
404370:	39 7e 4c             	cmp    %edi,0x4c(%esi)
404373:	89 45 fc             	mov    %eax,-0x4(%ebp)
404376:	0f 84 8e 00 00 00    	je     0x40440a
40437c:	e8 3c fc ff ff       	call   0x403fbd
404381:	84 c0                	test   %al,%al
404383:	0f 84 81 00 00 00    	je     0x40440a
404389:	8d 45 f8             	lea    -0x8(%ebp),%eax
40438c:	50                   	push   %eax
40438d:	ff 76 4c             	push   0x4c(%esi)
404390:	e8 3e 42 00 00       	call   0x4085d3
404395:	85 c0                	test   %eax,%eax
404397:	59                   	pop    %ecx
404398:	59                   	pop    %ecx
404399:	75 6f                	jne    0x40440a
40439b:	39 7d 0c             	cmp    %edi,0xc(%ebp)
40439e:	74 14                	je     0x4043b4
4043a0:	6a 01                	push   $0x1
4043a2:	ff 75 0c             	push   0xc(%ebp)
4043a5:	ff 76 4c             	push   0x4c(%esi)
4043a8:	e8 a1 41 00 00       	call   0x40854e
4043ad:	83 c4 0c             	add    $0xc,%esp
4043b0:	85 c0                	test   %eax,%eax
4043b2:	75 56                	jne    0x40440a
4043b4:	8d 45 f8             	lea    -0x8(%ebp),%eax
4043b7:	50                   	push   %eax
4043b8:	ff 76 4c             	push   0x4c(%esi)
4043bb:	e8 9c 40 00 00       	call   0x40845c
4043c0:	85 c0                	test   %eax,%eax
4043c2:	59                   	pop    %ecx
4043c3:	59                   	pop    %ecx
4043c4:	75 44                	jne    0x40440a
4043c6:	8b 45 1c             	mov    0x1c(%ebp),%eax
4043c9:	89 46 44             	mov    %eax,0x44(%esi)
4043cc:	8b 46 20             	mov    0x20(%esi),%eax
4043cf:	8d 4e 40             	lea    0x40(%esi),%ecx
4043d2:	39 08                	cmp    %ecx,(%eax)
4043d4:	75 1b                	jne    0x4043f1
4043d6:	8b 56 10             	mov    0x10(%esi),%edx
4043d9:	89 0a                	mov    %ecx,(%edx)
4043db:	8b 4e 20             	mov    0x20(%esi),%ecx
4043de:	8d 46 42             	lea    0x42(%esi),%eax
4043e1:	89 01                	mov    %eax,(%ecx)
4043e3:	8b ce                	mov    %esi,%ecx
4043e5:	2b c8                	sub    %eax,%ecx
4043e7:	8b 46 30             	mov    0x30(%esi),%eax
4043ea:	83 c1 42             	add    $0x42,%ecx
4043ed:	d1 f9                	sar    $1,%ecx
4043ef:	89 08                	mov    %ecx,(%eax)
4043f1:	8b 45 08             	mov    0x8(%ebp),%eax
4043f4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4043f7:	89 48 08             	mov    %ecx,0x8(%eax)
4043fa:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4043fd:	89 48 0c             	mov    %ecx,0xc(%eax)
404400:	8b 4e 44             	mov    0x44(%esi),%ecx
404403:	89 38                	mov    %edi,(%eax)
404405:	89 48 10             	mov    %ecx,0x10(%eax)
404408:	eb 14                	jmp    0x40441e
40440a:	8b 45 08             	mov    0x8(%ebp),%eax
40440d:	8b 0d 10 76 41 00    	mov    0x417610,%ecx
404413:	89 08                	mov    %ecx,(%eax)
404415:	89 78 08             	mov    %edi,0x8(%eax)
404418:	89 78 0c             	mov    %edi,0xc(%eax)
40441b:	89 78 10             	mov    %edi,0x10(%eax)
40441e:	5f                   	pop    %edi
40441f:	5e                   	pop    %esi
404420:	c9                   	leave
404421:	c2 20 00             	ret    $0x20
404424:	56                   	push   %esi
404425:	8b f1                	mov    %ecx,%esi
404427:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
40442b:	57                   	push   %edi
40442c:	8b fe                	mov    %esi,%edi
40442e:	74 18                	je     0x404448
404430:	e8 88 fb ff ff       	call   0x403fbd
404435:	84 c0                	test   %al,%al
404437:	75 02                	jne    0x40443b
404439:	33 ff                	xor    %edi,%edi
40443b:	ff 76 4c             	push   0x4c(%esi)
40443e:	e8 45 42 00 00       	call   0x408688
404443:	85 c0                	test   %eax,%eax
404445:	59                   	pop    %ecx
404446:	74 02                	je     0x40444a
404448:	33 ff                	xor    %edi,%edi
40444a:	6a 02                	push   $0x2
40444c:	6a 00                	push   $0x0
40444e:	8b ce                	mov    %esi,%ecx
404450:	e8 3e f6 ff ff       	call   0x403a93
404455:	8b c7                	mov    %edi,%eax
404457:	5f                   	pop    %edi
404458:	5e                   	pop    %esi
404459:	c3                   	ret