407280:	89 4d d0             	mov    %ecx,-0x30(%ebp)
407283:	85 c0                	test   %eax,%eax
407285:	75 05                	jne    0x40728c
407287:	3b 55 e0             	cmp    -0x20(%ebp),%edx
40728a:	eb 02                	jmp    0x40728e
40728c:	3b d0                	cmp    %eax,%edx
40728e:	0f 83 14 01 00 00    	jae    0x4073a8
407294:	83 7d ec 13          	cmpl   $0x13,-0x14(%ebp)
407298:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40729b:	1b c0                	sbb    %eax,%eax
40729d:	83 e0 fd             	and    $0xfffffffd,%eax
4072a0:	83 c0 0a             	add    $0xa,%eax
4072a3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4072a6:	8b 55 e8             	mov    -0x18(%ebp),%edx
4072a9:	83 c1 02             	add    $0x2,%ecx
4072ac:	8b 45 b0             	mov    -0x50(%ebp),%eax
4072af:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4072b2:	3b c2                	cmp    %edx,%eax
4072b4:	0f 84 ee 00 00 00    	je     0x4073a8
4072ba:	8b c8                	mov    %eax,%ecx
4072bc:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4072bf:	2b ca                	sub    %edx,%ecx
4072c1:	3b c8                	cmp    %eax,%ecx
4072c3:	72 02                	jb     0x4072c7
4072c5:	8b c8                	mov    %eax,%ecx
4072c7:	3b 55 dc             	cmp    -0x24(%ebp),%edx
4072ca:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4072cd:	1b c0                	sbb    %eax,%eax
4072cf:	01 4d e0             	add    %ecx,-0x20(%ebp)
4072d2:	23 45 d8             	and    -0x28(%ebp),%eax
4072d5:	2b 45 dc             	sub    -0x24(%ebp),%eax
4072d8:	29 4d e4             	sub    %ecx,-0x1c(%ebp)
4072db:	03 d0                	add    %eax,%edx
4072dd:	89 45 9c             	mov    %eax,-0x64(%ebp)
4072e0:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4072e3:	3b 45 d8             	cmp    -0x28(%ebp),%eax
4072e6:	77 21                	ja     0x407309
4072e8:	8b 55 c8             	mov    -0x38(%ebp),%edx
4072eb:	03 d3                	add    %ebx,%edx
4072ed:	03 d9                	add    %ecx,%ebx
4072ef:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4072f2:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4072f5:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
4072f8:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4072fb:	8b d8                	mov    %eax,%ebx
4072fd:	8a 04 11             	mov    (%ecx,%edx,1),%al
407300:	88 02                	mov    %al,(%edx)
407302:	42                   	inc    %edx
407303:	3b d3                	cmp    %ebx,%edx
407305:	75 f6                	jne    0x4072fd
407307:	eb 23                	jmp    0x40732c
407309:	8b 75 c8             	mov    -0x38(%ebp),%esi
40730c:	8a 04 32             	mov    (%edx,%esi,1),%al
40730f:	88 04 33             	mov    %al,(%ebx,%esi,1)
407312:	8d 42 01             	lea    0x1(%edx),%eax
407315:	8b d0                	mov    %eax,%edx
407317:	43                   	inc    %ebx
407318:	2b 55 d8             	sub    -0x28(%ebp),%edx
40731b:	f7 da                	neg    %edx
40731d:	1b d2                	sbb    %edx,%edx
40731f:	23 d0                	and    %eax,%edx
407321:	83 e9 01             	sub    $0x1,%ecx
407324:	75 e6                	jne    0x40730c
407326:	8b 75 f8             	mov    -0x8(%ebp),%esi
407329:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40732c:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40732f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407332:	8b 45 e0             	mov    -0x20(%ebp),%eax
407335:	8b 55 ec             	mov    -0x14(%ebp),%edx
407338:	3b 4d b0             	cmp    -0x50(%ebp),%ecx
40733b:	73 09                	jae    0x407346
40733d:	3b 5d 08             	cmp    0x8(%ebp),%ebx
407340:	0f 82 d5 f3 ff ff    	jb     0x40671b
407346:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
407349:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40734f:	73 0c                	jae    0x40735d
407351:	0f b6 03             	movzbl (%ebx),%eax
407354:	c1 e6 08             	shl    $0x8,%esi
407357:	c1 e7 08             	shl    $0x8,%edi
40735a:	0b f0                	or     %eax,%esi
40735c:	43                   	inc    %ebx
40735d:	8b 45 ac             	mov    -0x54(%ebp),%eax
407360:	89 48 48             	mov    %ecx,0x48(%eax)
407363:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407366:	89 48 24             	mov    %ecx,0x24(%eax)
407369:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40736c:	89 58 18             	mov    %ebx,0x18(%eax)
40736f:	8b 5d d0             	mov    -0x30(%ebp),%ebx
407372:	89 48 2c             	mov    %ecx,0x2c(%eax)
407375:	8b 4d dc             	mov    -0x24(%ebp),%ecx
407378:	89 48 38             	mov    %ecx,0x38(%eax)
40737b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40737e:	89 58 40             	mov    %ebx,0x40(%eax)
407381:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
407384:	89 78 1c             	mov    %edi,0x1c(%eax)
407387:	89 70 20             	mov    %esi,0x20(%eax)
40738a:	89 48 3c             	mov    %ecx,0x3c(%eax)
40738d:	89 58 44             	mov    %ebx,0x44(%eax)
407390:	89 50 34             	mov    %edx,0x34(%eax)
407393:	33 c0                	xor    %eax,%eax
407395:	eb 14                	jmp    0x4073ab
407397:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40739a:	8b 55 ec             	mov    -0x14(%ebp),%edx
40739d:	81 c1 12 01 00 00    	add    $0x112,%ecx
4073a3:	83 ea 0c             	sub    $0xc,%edx
4073a6:	eb a1                	jmp    0x407349
4073a8:	33 c0                	xor    %eax,%eax
4073aa:	40                   	inc    %eax
4073ab:	5f                   	pop    %edi
4073ac:	5e                   	pop    %esi
4073ad:	5b                   	pop    %ebx
4073ae:	c9                   	leave
4073af:	c2 04 00             	ret    $0x4
4073b2:	55                   	push   %ebp
4073b3:	8b ec                	mov    %esp,%ebp
4073b5:	83 ec 0c             	sub    $0xc,%esp
4073b8:	8b c2                	mov    %edx,%eax
4073ba:	57                   	push   %edi
4073bb:	8b 79 48             	mov    0x48(%ecx),%edi
4073be:	85 ff                	test   %edi,%edi
4073c0:	74 6f                	je     0x407431
4073c2:	81 ff 12 01 00 00    	cmp    $0x112,%edi
4073c8:	73 67                	jae    0x407431
4073ca:	8b 51 24             	mov    0x24(%ecx),%edx
4073cd:	2b c2                	sub    %edx,%eax
4073cf:	53                   	push   %ebx
4073d0:	8b 59 14             	mov    0x14(%ecx),%ebx
4073d3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4073d6:	8b 59 28             	mov    0x28(%ecx),%ebx
4073d9:	56                   	push   %esi
4073da:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4073dd:	8b f7                	mov    %edi,%esi
4073df:	8b 59 38             	mov    0x38(%ecx),%ebx
4073e2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4073e5:	8b 5d fc             	mov    -0x4(%ebp),%ebx
4073e8:	3b c6                	cmp    %esi,%eax
4073ea:	73 02                	jae    0x4073ee
4073ec:	8b f0                	mov    %eax,%esi
4073ee:	83 79 30 00          	cmpl   $0x0,0x30(%ecx)
4073f2:	75 12                	jne    0x407406
4073f4:	8b 59 0c             	mov    0xc(%ecx),%ebx
4073f7:	8b c3                	mov    %ebx,%eax
4073f9:	2b 41 2c             	sub    0x2c(%ecx),%eax
4073fc:	3b c6                	cmp    %esi,%eax
4073fe:	77 03                	ja     0x407403
407400:	89 59 30             	mov    %ebx,0x30(%ecx)
407403:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407406:	01 71 2c             	add    %esi,0x2c(%ecx)
407409:	2b fe                	sub    %esi,%edi
40740b:	89 79 48             	mov    %edi,0x48(%ecx)
40740e:	85 f6                	test   %esi,%esi
407410:	74 1a                	je     0x40742c
407412:	8b 7d f8             	mov    -0x8(%ebp),%edi
407415:	3b d7                	cmp    %edi,%edx
407417:	1b c0                	sbb    %eax,%eax
407419:	23 45 f4             	and    -0xc(%ebp),%eax
40741c:	2b c7                	sub    %edi,%eax
40741e:	03 c2                	add    %edx,%eax
407420:	8a 04 18             	mov    (%eax,%ebx,1),%al
407423:	88 04 1a             	mov    %al,(%edx,%ebx,1)
407426:	42                   	inc    %edx
407427:	83 ee 01             	sub    $0x1,%esi
40742a:	75 e9                	jne    0x407415
40742c:	5e                   	pop    %esi
40742d:	89 51 24             	mov    %edx,0x24(%ecx)
407430:	5b                   	pop    %ebx
407431:	5f                   	pop    %edi
407432:	c9                   	leave
407433:	c3                   	ret
407434:	55                   	push   %ebp
407435:	8b ec                	mov    %esp,%ebp
407437:	53                   	push   %ebx
407438:	8b 5d 08             	mov    0x8(%ebp),%ebx
40743b:	56                   	push   %esi
40743c:	57                   	push   %edi
40743d:	8b fa                	mov    %edx,%edi
40743f:	8b f1                	mov    %ecx,%esi
407441:	83 7e 30 00          	cmpl   $0x0,0x30(%esi)
407445:	8b d7                	mov    %edi,%edx
407447:	75 14                	jne    0x40745d
407449:	8b 4e 0c             	mov    0xc(%esi),%ecx
40744c:	8b c7                	mov    %edi,%eax
40744e:	2b 4e 2c             	sub    0x2c(%esi),%ecx
407451:	2b 46 24             	sub    0x24(%esi),%eax
407454:	3b c1                	cmp    %ecx,%eax
407456:	76 05                	jbe    0x40745d
407458:	8b 56 24             	mov    0x24(%esi),%edx
40745b:	03 d1                	add    %ecx,%edx
40745d:	53                   	push   %ebx
40745e:	8b ce                	mov    %esi,%ecx
407460:	e8 2b f2 ff ff       	call   0x406690
407465:	85 c0                	test   %eax,%eax
407467:	75 39                	jne    0x4074a2
407469:	8b 46 0c             	mov    0xc(%esi),%eax
40746c:	39 46 2c             	cmp    %eax,0x2c(%esi)
40746f:	72 03                	jb     0x407474
407471:	89 46 30             	mov    %eax,0x30(%esi)
407474:	8b d7                	mov    %edi,%edx
407476:	8b ce                	mov    %esi,%ecx
407478:	e8 35 ff ff ff       	call   0x4073b2
40747d:	39 7e 24             	cmp    %edi,0x24(%esi)
407480:	73 0e                	jae    0x407490
407482:	39 5e 18             	cmp    %ebx,0x18(%esi)
407485:	73 09                	jae    0x407490
407487:	81 7e 48 12 01 00 00 	cmpl   $0x112,0x48(%esi)
40748e:	72 b1                	jb     0x407441
407490:	81 7e 48 12 01 00 00 	cmpl   $0x112,0x48(%esi)
407497:	76 07                	jbe    0x4074a0
407499:	c7 46 48 12 01 00 00 	movl   $0x112,0x48(%esi)
4074a0:	33 c0                	xor    %eax,%eax
4074a2:	5f                   	pop    %edi
4074a3:	5e                   	pop    %esi
4074a4:	5b                   	pop    %ebx
4074a5:	5d                   	pop    %ebp
4074a6:	c2 04 00             	ret    $0x4
4074a9:	55                   	push   %ebp
4074aa:	8b ec                	mov    %esp,%ebp
4074ac:	83 ec 20             	sub    $0x20,%esp
4074af:	8b 45 08             	mov    0x8(%ebp),%eax
4074b2:	53                   	push   %ebx
4074b3:	8b da                	mov    %edx,%ebx
4074b5:	89 55 e8             	mov    %edx,-0x18(%ebp)
4074b8:	8b d1                	mov    %ecx,%edx
4074ba:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
4074c1:	03 c3                	add    %ebx,%eax
4074c3:	89 55 f0             	mov    %edx,-0x10(%ebp)
4074c6:	89 45 fc             	mov    %eax,-0x4(%ebp)
4074c9:	56                   	push   %esi
4074ca:	8b 4a 2c             	mov    0x2c(%edx),%ecx
4074cd:	8b 42 10             	mov    0x10(%edx),%eax
4074d0:	8b 72 20             	mov    0x20(%edx),%esi
4074d3:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4074d6:	8b 4a 08             	mov    0x8(%edx),%ecx
4074d9:	d3 65 f4             	shll   %cl,-0xc(%ebp)
4074dc:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4074df:	89 45 f8             	mov    %eax,-0x8(%ebp)
4074e2:	49                   	dec    %ecx
4074e3:	23 4a 2c             	and    0x2c(%edx),%ecx
4074e6:	8b 42 34             	mov    0x34(%edx),%eax
4074e9:	89 45 ec             	mov    %eax,-0x14(%ebp)
4074ec:	c1 e0 04             	shl    $0x4,%eax
4074ef:	03 c1                	add    %ecx,%eax
4074f1:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4074f4:	8b 4a 10             	mov    0x10(%edx),%ecx
4074f7:	57                   	push   %edi
4074f8:	8b 7a 1c             	mov    0x1c(%edx),%edi
4074fb:	0f b7 0c 41          	movzwl (%ecx,%eax,2),%ecx
4074ff:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407505:	73 18                	jae    0x40751f
407507:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40750a:	0f 83 14 05 00 00    	jae    0x407a24
407510:	0f b6 03             	movzbl (%ebx),%eax
407513:	c1 e6 08             	shl    $0x8,%esi
407516:	c1 e7 08             	shl    $0x8,%edi
407519:	0b f0                	or     %eax,%esi
40751b:	43                   	inc    %ebx
40751c:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40751f:	8b c7                	mov    %edi,%eax
407521:	c1 e8 0b             	shr    $0xb,%eax
407524:	0f af c1             	imul   %ecx,%eax
407527:	3b f0                	cmp    %eax,%esi
407529:	0f 83 3f 01 00 00    	jae    0x40766e
40752f:	8b f8                	mov    %eax,%edi
407531:	33 c9                	xor    %ecx,%ecx
407533:	8b 42 10             	mov    0x10(%edx),%eax
407536:	05 6c 0e 00 00       	add    $0xe6c,%eax
40753b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40753e:	39 4a 30             	cmp    %ecx,0x30(%edx)
407541:	75 05                	jne    0x407548
407543:	39 4a 2c             	cmp    %ecx,0x2c(%edx)
407546:	74 42                	je     0x40758a
407548:	8b 4a 24             	mov    0x24(%edx),%ecx
40754b:	85 c9                	test   %ecx,%ecx
40754d:	75 03                	jne    0x407552
40754f:	8b 4a 28             	mov    0x28(%edx),%ecx
407552:	8b 42 14             	mov    0x14(%edx),%eax
407555:	6a 08                	push   $0x8
407557:	0f b6 54 08 ff       	movzbl -0x1(%eax,%ecx,1),%edx
40755c:	8b 45 f0             	mov    -0x10(%ebp),%eax
40755f:	59                   	pop    %ecx
407560:	2a 08                	sub    (%eax),%cl
407562:	33 c0                	xor    %eax,%eax
407564:	d3 ea                	shr    %cl,%edx
407566:	40                   	inc    %eax
407567:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40756a:	8b 49 04             	mov    0x4(%ecx),%ecx
40756d:	d3 e0                	shl    %cl,%eax
40756f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407572:	48                   	dec    %eax
407573:	23 45 e0             	and    -0x20(%ebp),%eax
407576:	8b 09                	mov    (%ecx),%ecx
407578:	d3 e0                	shl    %cl,%eax
40757a:	03 d0                	add    %eax,%edx
40757c:	69 c2 00 06 00 00    	imul   $0x600,%edx,%eax
407582:	8b 55 f0             	mov    -0x10(%ebp),%edx
407585:	01 45 f4             	add    %eax,-0xc(%ebp)
407588:	33 c9                	xor    %ecx,%ecx
40758a:	83 7a 34 07          	cmpl   $0x7,0x34(%edx)
40758e:	73 4e                	jae    0x4075de
407590:	33 c9                	xor    %ecx,%ecx
407592:	41                   	inc    %ecx
407593:	8b 45 f4             	mov    -0xc(%ebp),%eax
407596:	03 c9                	add    %ecx,%ecx
407598:	0f b7 14 01          	movzwl (%ecx,%eax,1),%edx
40759c:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4075a2:	73 15                	jae    0x4075b9
4075a4:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4075a7:	0f 83 77 04 00 00    	jae    0x407a24
4075ad:	0f b6 03             	movzbl (%ebx),%eax
4075b0:	c1 e6 08             	shl    $0x8,%esi
4075b3:	c1 e7 08             	shl    $0x8,%edi
4075b6:	0b f0                	or     %eax,%esi
4075b8:	43                   	inc    %ebx
4075b9:	8b c7                	mov    %edi,%eax
4075bb:	c1 e8 0b             	shr    $0xb,%eax
4075be:	0f af c2             	imul   %edx,%eax
4075c1:	3b f0                	cmp    %eax,%esi
4075c3:	73 04                	jae    0x4075c9
4075c5:	8b f8                	mov    %eax,%edi
4075c7:	eb 05                	jmp    0x4075ce
4075c9:	2b f8                	sub    %eax,%edi
4075cb:	2b f0                	sub    %eax,%esi
4075cd:	41                   	inc    %ecx
4075ce:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
4075d4:	72 bd                	jb     0x407593
4075d6:	33 c9                	xor    %ecx,%ecx
4075d8:	41                   	inc    %ecx
4075d9:	e9 35 04 00 00       	jmp    0x407a13
4075de:	8b 42 38             	mov    0x38(%edx),%eax
4075e1:	39 42 24             	cmp    %eax,0x24(%edx)
4075e4:	73 03                	jae    0x4075e9
4075e6:	8b 4a 28             	mov    0x28(%edx),%ecx
4075e9:	8b 42 14             	mov    0x14(%edx),%eax
4075ec:	2b 42 38             	sub    0x38(%edx),%eax
4075ef:	03 42 24             	add    0x24(%edx),%eax
4075f2:	33 d2                	xor    %edx,%edx
4075f4:	42                   	inc    %edx
4075f5:	0f b6 0c 08          	movzbl (%eax,%ecx,1),%ecx
4075f9:	b8 00 01 00 00       	mov    $0x100,%eax
4075fe:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407601:	03 c9                	add    %ecx,%ecx
407603:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
407606:	8b c8                	mov    %eax,%ecx
407608:	23 4d e4             	and    -0x1c(%ebp),%ecx
40760b:	89 45 ec             	mov    %eax,-0x14(%ebp)
40760e:	8d 04 11             	lea    (%ecx,%edx,1),%eax
407611:	03 45 ec             	add    -0x14(%ebp),%eax
407614:	0f b7 04 43          	movzwl (%ebx,%eax,2),%eax
407618:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40761b:	89 45 e0             	mov    %eax,-0x20(%ebp)