40f9be:	39 7d fc             	cmp    %edi,-0x4(%ebp)
40f9c1:	74 08                	je     0x40f9cb
40f9c3:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40f9c6:	e8 e9 db ff ff       	call   0x40d5b4
40f9cb:	68 d0 07 00 00       	push   $0x7d0
40f9d0:	ff 15 e4 21 41 00    	call   *0x4121e4
40f9d6:	68 e8 46 41 00       	push   $0x4146e8
40f9db:	68 01 00 00 80       	push   $0x80000001
40f9e0:	ff 15 04 20 41 00    	call   *0x412004
40f9e6:	57                   	push   %edi
40f9e7:	ff 15 b0 21 41 00    	call   *0x4121b0
40f9ed:	5f                   	pop    %edi
40f9ee:	33 c0                	xor    %eax,%eax
40f9f0:	5e                   	pop    %esi
40f9f1:	c9                   	leave
40f9f2:	c3                   	ret
40f9f3:	55                   	push   %ebp
40f9f4:	8b ec                	mov    %esp,%ebp
40f9f6:	53                   	push   %ebx
40f9f7:	8b da                	mov    %edx,%ebx
40f9f9:	8b c3                	mov    %ebx,%eax
40f9fb:	99                   	cltd
40f9fc:	83 e2 03             	and    $0x3,%edx
40f9ff:	56                   	push   %esi
40fa00:	57                   	push   %edi
40fa01:	8d 3c 02             	lea    (%edx,%eax,1),%edi
40fa04:	ba ad 10 00 00       	mov    $0x10ad,%edx
40fa09:	c1 ff 02             	sar    $0x2,%edi
40fa0c:	8d 34 b9             	lea    (%ecx,%edi,4),%esi
40fa0f:	f7 df                	neg    %edi
40fa11:	74 23                	je     0x40fa36
40fa13:	69 04 be 51 2d 9e cc 	imul   $0xcc9e2d51,(%esi,%edi,4),%eax
40fa1a:	c1 c0 0f             	rol    $0xf,%eax
40fa1d:	69 c0 93 35 87 1b    	imul   $0x1b873593,%eax,%eax
40fa23:	33 c2                	xor    %edx,%eax
40fa25:	c1 c0 0d             	rol    $0xd,%eax
40fa28:	6b d0 05             	imul   $0x5,%eax,%edx
40fa2b:	81 ea 9c 94 ab 19    	sub    $0x19ab949c,%edx
40fa31:	83 c7 01             	add    $0x1,%edi
40fa34:	75 dd                	jne    0x40fa13
40fa36:	8b c3                	mov    %ebx,%eax
40fa38:	33 c9                	xor    %ecx,%ecx
40fa3a:	83 e0 03             	and    $0x3,%eax
40fa3d:	83 e8 01             	sub    $0x1,%eax
40fa40:	74 1a                	je     0x40fa5c
40fa42:	83 e8 01             	sub    $0x1,%eax
40fa45:	74 0c                	je     0x40fa53
40fa47:	83 e8 01             	sub    $0x1,%eax
40fa4a:	75 26                	jne    0x40fa72
40fa4c:	0f b6 4e 02          	movzbl 0x2(%esi),%ecx
40fa50:	c1 e1 10             	shl    $0x10,%ecx
40fa53:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40fa57:	c1 e0 08             	shl    $0x8,%eax
40fa5a:	33 c8                	xor    %eax,%ecx
40fa5c:	0f b6 06             	movzbl (%esi),%eax
40fa5f:	33 c1                	xor    %ecx,%eax
40fa61:	69 c0 51 2d 9e cc    	imul   $0xcc9e2d51,%eax,%eax
40fa67:	c1 c0 0f             	rol    $0xf,%eax
40fa6a:	69 c0 93 35 87 1b    	imul   $0x1b873593,%eax,%eax
40fa70:	33 d0                	xor    %eax,%edx
40fa72:	33 d3                	xor    %ebx,%edx
40fa74:	8b c2                	mov    %edx,%eax
40fa76:	c1 e8 10             	shr    $0x10,%eax
40fa79:	33 c2                	xor    %edx,%eax
40fa7b:	69 c8 6b ca eb 85    	imul   $0x85ebca6b,%eax,%ecx
40fa81:	5f                   	pop    %edi
40fa82:	5e                   	pop    %esi
40fa83:	5b                   	pop    %ebx
40fa84:	8b c1                	mov    %ecx,%eax
40fa86:	c1 e8 0d             	shr    $0xd,%eax
40fa89:	33 c1                	xor    %ecx,%eax
40fa8b:	69 c0 35 ae b2 c2    	imul   $0xc2b2ae35,%eax,%eax
40fa91:	8b c8                	mov    %eax,%ecx
40fa93:	c1 e9 10             	shr    $0x10,%ecx
40fa96:	33 c8                	xor    %eax,%ecx
40fa98:	8b 45 0c             	mov    0xc(%ebp),%eax
40fa9b:	89 08                	mov    %ecx,(%eax)
40fa9d:	5d                   	pop    %ebp
40fa9e:	c3                   	ret
40fa9f:	55                   	push   %ebp
40faa0:	8b ec                	mov    %esp,%ebp
40faa2:	51                   	push   %ecx
40faa3:	53                   	push   %ebx
40faa4:	56                   	push   %esi
40faa5:	be 9f fa 40 00       	mov    $0x40fa9f,%esi
40faaa:	c7 45 fc 4d 5a 90 00 	movl   $0x905a4d,-0x4(%ebp)
40fab1:	33 db                	xor    %ebx,%ebx
40fab3:	6a 04                	push   $0x4
40fab5:	8d 45 fc             	lea    -0x4(%ebp),%eax
40fab8:	56                   	push   %esi
40fab9:	50                   	push   %eax
40faba:	e8 41 15 ff ff       	call   0x401000
40fabf:	83 c4 0c             	add    $0xc,%esp
40fac2:	85 c0                	test   %eax,%eax
40fac4:	74 13                	je     0x40fad9
40fac6:	33 c9                	xor    %ecx,%ecx
40fac8:	8d 43 01             	lea    0x1(%ebx),%eax
40facb:	4e                   	dec    %esi
40facc:	81 fb e7 03 00 00    	cmp    $0x3e7,%ebx
40fad2:	0f 45 c8             	cmovne %eax,%ecx
40fad5:	8b d9                	mov    %ecx,%ebx
40fad7:	eb da                	jmp    0x40fab3
40fad9:	8b c6                	mov    %esi,%eax
40fadb:	5e                   	pop    %esi
40fadc:	5b                   	pop    %ebx
40fadd:	c9                   	leave
40fade:	c3                   	ret
40fadf:	56                   	push   %esi
40fae0:	57                   	push   %edi
40fae1:	8b f9                	mov    %ecx,%edi
40fae3:	33 f6                	xor    %esi,%esi
40fae5:	56                   	push   %esi
40fae6:	e8 1e 00 00 00       	call   0x40fb09
40faeb:	59                   	pop    %ecx
40faec:	33 d2                	xor    %edx,%edx
40faee:	6a 3e                	push   $0x3e
40faf0:	59                   	pop    %ecx
40faf1:	f7 f1                	div    %ecx
40faf3:	8a 82 60 47 41 00    	mov    0x414760(%edx),%al
40faf9:	88 04 3e             	mov    %al,(%esi,%edi,1)
40fafc:	46                   	inc    %esi
40fafd:	83 fe 0a             	cmp    $0xa,%esi
40fb00:	7c e3                	jl     0x40fae5
40fb02:	c6 47 0a 00          	movb   $0x0,0xa(%edi)
40fb06:	5f                   	pop    %edi
40fb07:	5e                   	pop    %esi
40fb08:	c3                   	ret
40fb09:	55                   	push   %ebp
40fb0a:	8b ec                	mov    %esp,%ebp
40fb0c:	6a 01                	push   $0x1
40fb0e:	ff 15 e4 21 41 00    	call   *0x4121e4
40fb14:	ff 15 c8 21 41 00    	call   *0x4121c8
40fb1a:	69 4d 08 59 03 00 00 	imul   $0x359,0x8(%ebp),%ecx
40fb21:	33 d2                	xor    %edx,%edx
40fb23:	41                   	inc    %ecx
40fb24:	0f af c1             	imul   %ecx,%eax
40fb27:	b9 10 27 00 00       	mov    $0x2710,%ecx
40fb2c:	f7 f1                	div    %ecx
40fb2e:	8b c2                	mov    %edx,%eax
40fb30:	5d                   	pop    %ebp
40fb31:	c3                   	ret
40fb32:	53                   	push   %ebx
40fb33:	56                   	push   %esi
40fb34:	57                   	push   %edi
40fb35:	68 88 49 41 00       	push   $0x414988
40fb3a:	8b da                	mov    %edx,%ebx
40fb3c:	8b f9                	mov    %ecx,%edi
40fb3e:	e8 92 15 ff ff       	call   0x4010d5
40fb43:	59                   	pop    %ecx
40fb44:	33 f6                	xor    %esi,%esi
40fb46:	8b c8                	mov    %eax,%ecx
40fb48:	85 db                	test   %ebx,%ebx
40fb4a:	7e 13                	jle    0x40fb5f
40fb4c:	8b c6                	mov    %esi,%eax
40fb4e:	99                   	cltd
40fb4f:	f7 f9                	idiv   %ecx
40fb51:	8a 82 88 49 41 00    	mov    0x414988(%edx),%al
40fb57:	30 04 3e             	xor    %al,(%esi,%edi,1)
40fb5a:	46                   	inc    %esi
40fb5b:	3b f3                	cmp    %ebx,%esi
40fb5d:	7c ed                	jl     0x40fb4c
40fb5f:	8b c7                	mov    %edi,%eax
40fb61:	5f                   	pop    %edi
40fb62:	5e                   	pop    %esi
40fb63:	5b                   	pop    %ebx
40fb64:	c3                   	ret
40fb65:	55                   	push   %ebp
40fb66:	8b ec                	mov    %esp,%ebp
40fb68:	51                   	push   %ecx
40fb69:	51                   	push   %ecx
40fb6a:	53                   	push   %ebx
40fb6b:	56                   	push   %esi
40fb6c:	57                   	push   %edi
40fb6d:	6a 04                	push   $0x4
40fb6f:	8b c2                	mov    %edx,%eax
40fb71:	33 ff                	xor    %edi,%edi
40fb73:	68 00 10 00 00       	push   $0x1000
40fb78:	50                   	push   %eax
40fb79:	57                   	push   %edi
40fb7a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fb7d:	8b f1                	mov    %ecx,%esi
40fb7f:	ff 15 d8 21 41 00    	call   *0x4121d8
40fb85:	8b 55 fc             	mov    -0x4(%ebp),%edx
40fb88:	8b d8                	mov    %eax,%ebx
40fb8a:	8d 42 ff             	lea    -0x1(%edx),%eax
40fb8d:	03 c6                	add    %esi,%eax
40fb8f:	8a 08                	mov    (%eax),%cl
40fb91:	f6 d1                	not    %cl
40fb93:	88 0c 1f             	mov    %cl,(%edi,%ebx,1)
40fb96:	47                   	inc    %edi
40fb97:	48                   	dec    %eax
40fb98:	3b fa                	cmp    %edx,%edi
40fb9a:	76 f3                	jbe    0x40fb8f
40fb9c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40fb9f:	50                   	push   %eax
40fba0:	6a 40                	push   $0x40
40fba2:	52                   	push   %edx
40fba3:	53                   	push   %ebx
40fba4:	ff 15 70 21 41 00    	call   *0x412170
40fbaa:	5f                   	pop    %edi
40fbab:	5e                   	pop    %esi
40fbac:	8b c3                	mov    %ebx,%eax
40fbae:	5b                   	pop    %ebx
40fbaf:	c9                   	leave
40fbb0:	c3                   	ret
40fbb1:	55                   	push   %ebp
40fbb2:	8b ec                	mov    %esp,%ebp
40fbb4:	51                   	push   %ecx
40fbb5:	53                   	push   %ebx
40fbb6:	56                   	push   %esi
40fbb7:	57                   	push   %edi
40fbb8:	33 db                	xor    %ebx,%ebx
40fbba:	8b fa                	mov    %edx,%edi
40fbbc:	53                   	push   %ebx
40fbbd:	53                   	push   %ebx
40fbbe:	6a 02                	push   $0x2
40fbc0:	53                   	push   %ebx
40fbc1:	53                   	push   %ebx
40fbc2:	68 00 00 00 40       	push   $0x40000000
40fbc7:	51                   	push   %ecx
40fbc8:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40fbcb:	ff 15 94 20 41 00    	call   *0x412094
40fbd1:	8b f0                	mov    %eax,%esi
40fbd3:	83 fe ff             	cmp    $0xffffffff,%esi
40fbd6:	74 17                	je     0x40fbef
40fbd8:	53                   	push   %ebx
40fbd9:	8d 45 fc             	lea    -0x4(%ebp),%eax
40fbdc:	50                   	push   %eax
40fbdd:	ff 75 08             	push   0x8(%ebp)
40fbe0:	57                   	push   %edi
40fbe1:	56                   	push   %esi
40fbe2:	ff 15 90 20 41 00    	call   *0x412090
40fbe8:	56                   	push   %esi
40fbe9:	ff 15 00 22 41 00    	call   *0x412200
40fbef:	5f                   	pop    %edi
40fbf0:	5e                   	pop    %esi
40fbf1:	5b                   	pop    %ebx
40fbf2:	c9                   	leave
40fbf3:	c3                   	ret
40fbf4:	56                   	push   %esi
40fbf5:	e8 a5 fe ff ff       	call   0x40fa9f
40fbfa:	8b f0                	mov    %eax,%esi
40fbfc:	85 f6                	test   %esi,%esi
40fbfe:	75 12                	jne    0x40fc12
40fc00:	50                   	push   %eax
40fc01:	68 3c 47 41 00       	push   $0x41473c
40fc06:	68 44 47 41 00       	push   $0x414744
40fc0b:	50                   	push   %eax
40fc0c:	ff 15 84 22 41 00    	call   *0x412284
40fc12:	8b c6                	mov    %esi,%eax
40fc14:	5e                   	pop    %esi
40fc15:	c3                   	ret
40fc16:	55                   	push   %ebp
40fc17:	8b ec                	mov    %esp,%ebp
40fc19:	51                   	push   %ecx
40fc1a:	8b 45 08             	mov    0x8(%ebp),%eax
40fc1d:	53                   	push   %ebx
40fc1e:	8b d9                	mov    %ecx,%ebx
40fc20:	89 55 fc             	mov    %edx,-0x4(%ebp)
40fc23:	83 23 00             	andl   $0x0,(%ebx)
40fc26:	85 c0                	test   %eax,%eax
40fc28:	74 41                	je     0x40fc6b
40fc2a:	56                   	push   %esi
40fc2b:	8d 70 02             	lea    0x2(%eax),%esi
40fc2e:	57                   	push   %edi
40fc2f:	8b ce                	mov    %esi,%ecx
40fc31:	e8 a5 5e ff ff       	call   0x405adb
40fc36:	8b f8                	mov    %eax,%edi
40fc38:	56                   	push   %esi
40fc39:	8b cf                	mov    %edi,%ecx
40fc3b:	e8 79 5e ff ff       	call   0x405ab9
40fc40:	ff 75 08             	push   0x8(%ebp)
40fc43:	8b 55 fc             	mov    -0x4(%ebp),%edx
40fc46:	8b cf                	mov    %edi,%ecx
40fc48:	e8 4b 5e ff ff       	call   0x405a98
40fc4d:	83 c4 08             	add    $0x8,%esp
40fc50:	8d 4d 08             	lea    0x8(%ebp),%ecx
40fc53:	57                   	push   %edi
40fc54:	e8 b9 37 ff ff       	call   0x403412
40fc59:	50                   	push   %eax
40fc5a:	8b cb                	mov    %ebx,%ecx
40fc5c:	e8 03 36 ff ff       	call   0x403264
40fc61:	8b 4d 08             	mov    0x8(%ebp),%ecx
40fc64:	e8 c4 5d ff ff       	call   0x405a2d
40fc69:	5f                   	pop    %edi
40fc6a:	5e                   	pop    %esi
40fc6b:	8b c3                	mov    %ebx,%eax
40fc6d:	5b                   	pop    %ebx
40fc6e:	c9                   	leave
40fc6f:	c3                   	ret
40fc70:	c3                   	ret
40fc71:	55                   	push   %ebp
40fc72:	8b ec                	mov    %esp,%ebp
40fc74:	51                   	push   %ecx
40fc75:	53                   	push   %ebx
40fc76:	56                   	push   %esi
40fc77:	57                   	push   %edi
40fc78:	68 00 00 40 00       	push   $0x400000
40fc7d:	8b fa                	mov    %edx,%edi
40fc7f:	8b f1                	mov    %ecx,%esi
40fc81:	e8 27 14 ff ff       	call   0x4010ad
40fc86:	59                   	pop    %ecx
40fc87:	8b d8                	mov    %eax,%ebx
40fc89:	33 c0                	xor    %eax,%eax
40fc8b:	50                   	push   %eax
40fc8c:	68 80 00 00 00       	push   $0x80
40fc91:	6a 03                	push   $0x3
40fc93:	50                   	push   %eax
40fc94:	50                   	push   %eax
40fc95:	68 00 00 00 80       	push   $0x80000000
40fc9a:	56                   	push   %esi
40fc9b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fc9e:	ff 15 c4 20 41 00    	call   *0x4120c4
40fca4:	8b f0                	mov    %eax,%esi
40fca6:	6a 00                	push   $0x0
40fca8:	56                   	push   %esi
40fca9:	ff 15 d8 20 41 00    	call   *0x4120d8
40fcaf:	6a 00                	push   $0x0
40fcb1:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40fcb4:	89 07                	mov    %eax,(%edi)
40fcb6:	51                   	push   %ecx
40fcb7:	50                   	push   %eax
40fcb8:	53                   	push   %ebx
40fcb9:	56                   	push   %esi
40fcba:	ff 15 a8 20 41 00    	call   *0x4120a8
40fcc0:	56                   	push   %esi
40fcc1:	ff 15 00 22 41 00    	call   *0x412200
40fcc7:	5f                   	pop    %edi
40fcc8:	5e                   	pop    %esi
40fcc9:	8b c3                	mov    %ebx,%eax
40fccb:	5b                   	pop    %ebx
40fccc:	c9                   	leave
40fccd:	c3                   	ret
40fcce:	8b c1                	mov    %ecx,%eax
40fcd0:	c3                   	ret
40fcd1:	55                   	push   %ebp
40fcd2:	8b ec                	mov    %esp,%ebp
40fcd4:	83 ec 64             	sub    $0x64,%esp
40fcd7:	53                   	push   %ebx
40fcd8:	56                   	push   %esi
40fcd9:	57                   	push   %edi
40fcda:	8d 45 fc             	lea    -0x4(%ebp),%eax
40fcdd:	33 db                	xor    %ebx,%ebx
40fcdf:	50                   	push   %eax
40fce0:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40fce3:	ff 15 e8 20 41 00    	call   *0x4120e8
40fce9:	50                   	push   %eax
40fcea:	ff 15 20 22 41 00    	call   *0x412220
40fcf0:	85 c0                	test   %eax,%eax
40fcf2:	0f 84 99 00 00 00    	je     0x40fd91