40ac4c:	74 17                	je     0x40ac65
40ac4e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ac51:	a1 a0 66 41 00       	mov    0x4166a0,%eax
40ac56:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40ac5c:	75 07                	jne    0x40ac65
40ac5e:	e8 5b ee ff ff       	call   0x409abe
40ac63:	89 06                	mov    %eax,(%esi)
40ac65:	5e                   	pop    %esi
40ac66:	5d                   	pop    %ebp
40ac67:	c3                   	ret
40ac68:	8b ff                	mov    %edi,%edi
40ac6a:	55                   	push   %ebp
40ac6b:	8b ec                	mov    %esp,%ebp
40ac6d:	56                   	push   %esi
40ac6e:	8b 75 0c             	mov    0xc(%ebp),%esi
40ac71:	8b 06                	mov    (%esi),%eax
40ac73:	3b 05 4c 70 41 00    	cmp    0x41704c,%eax
40ac79:	74 17                	je     0x40ac92
40ac7b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ac7e:	a1 a0 66 41 00       	mov    0x4166a0,%eax
40ac83:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40ac89:	75 07                	jne    0x40ac92
40ac8b:	e8 42 dd ff ff       	call   0x4089d2
40ac90:	89 06                	mov    %eax,(%esi)
40ac92:	5e                   	pop    %esi
40ac93:	5d                   	pop    %ebp
40ac94:	c3                   	ret
40ac95:	8b ff                	mov    %edi,%edi
40ac97:	55                   	push   %ebp
40ac98:	8b ec                	mov    %esp,%ebp
40ac9a:	8b 45 10             	mov    0x10(%ebp),%eax
40ac9d:	56                   	push   %esi
40ac9e:	8b 75 0c             	mov    0xc(%ebp),%esi
40aca1:	8b 0e                	mov    (%esi),%ecx
40aca3:	3b 0c 85 4c 70 41 00 	cmp    0x41704c(,%eax,4),%ecx
40acaa:	74 17                	je     0x40acc3
40acac:	8b 4d 08             	mov    0x8(%ebp),%ecx
40acaf:	a1 a0 66 41 00       	mov    0x4166a0,%eax
40acb4:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40acba:	75 07                	jne    0x40acc3
40acbc:	e8 11 dd ff ff       	call   0x4089d2
40acc1:	89 06                	mov    %eax,(%esi)
40acc3:	5e                   	pop    %esi
40acc4:	5d                   	pop    %ebp
40acc5:	c3                   	ret
40acc6:	8b ff                	mov    %edi,%edi
40acc8:	55                   	push   %ebp
40acc9:	8b ec                	mov    %esp,%ebp
40accb:	51                   	push   %ecx
40accc:	53                   	push   %ebx
40accd:	56                   	push   %esi
40acce:	57                   	push   %edi
40accf:	8b 7d 0c             	mov    0xc(%ebp),%edi
40acd2:	85 ff                	test   %edi,%edi
40acd4:	0f 84 0a 01 00 00    	je     0x40ade4
40acda:	8b 5d 10             	mov    0x10(%ebp),%ebx
40acdd:	85 db                	test   %ebx,%ebx
40acdf:	0f 84 ff 00 00 00    	je     0x40ade4
40ace5:	80 3f 00             	cmpb   $0x0,(%edi)
40ace8:	75 15                	jne    0x40acff
40acea:	8b 45 08             	mov    0x8(%ebp),%eax
40aced:	85 c0                	test   %eax,%eax
40acef:	0f 84 fd 00 00 00    	je     0x40adf2
40acf5:	33 c9                	xor    %ecx,%ecx
40acf7:	66 89 08             	mov    %cx,(%eax)
40acfa:	e9 f3 00 00 00       	jmp    0x40adf2
40acff:	8b 75 14             	mov    0x14(%ebp),%esi
40ad02:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40ad06:	75 07                	jne    0x40ad0f
40ad08:	8b ce                	mov    %esi,%ecx
40ad0a:	e8 41 c3 ff ff       	call   0x407050
40ad0f:	8b 46 0c             	mov    0xc(%esi),%eax
40ad12:	8b 48 08             	mov    0x8(%eax),%ecx
40ad15:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ad18:	81 f9 e9 fd 00 00    	cmp    $0xfde9,%ecx
40ad1e:	75 23                	jne    0x40ad43
40ad20:	56                   	push   %esi
40ad21:	68 90 73 41 00       	push   $0x417390
40ad26:	53                   	push   %ebx
40ad27:	57                   	push   %edi
40ad28:	ff 75 08             	push   0x8(%ebp)
40ad2b:	e8 be 19 00 00       	call   0x40c6ee
40ad30:	83 c4 14             	add    $0x14,%esp
40ad33:	85 c0                	test   %eax,%eax
40ad35:	0f 89 b9 00 00 00    	jns    0x40adf4
40ad3b:	83 c8 ff             	or     $0xffffffff,%eax
40ad3e:	e9 b1 00 00 00       	jmp    0x40adf4
40ad43:	33 d2                	xor    %edx,%edx
40ad45:	39 90 a8 00 00 00    	cmp    %edx,0xa8(%eax)
40ad4b:	75 13                	jne    0x40ad60
40ad4d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ad50:	85 c9                	test   %ecx,%ecx
40ad52:	0f 84 87 00 00 00    	je     0x40addf
40ad58:	0f b6 07             	movzbl (%edi),%eax
40ad5b:	66 89 01             	mov    %ax,(%ecx)
40ad5e:	eb 7f                	jmp    0x40addf
40ad60:	0f b6 0f             	movzbl (%edi),%ecx
40ad63:	8b 00                	mov    (%eax),%eax
40ad65:	66 39 14 48          	cmp    %dx,(%eax,%ecx,2)
40ad69:	7d 54                	jge    0x40adbf
40ad6b:	8b 46 0c             	mov    0xc(%esi),%eax
40ad6e:	8b 48 04             	mov    0x4(%eax),%ecx
40ad71:	83 f9 01             	cmp    $0x1,%ecx
40ad74:	7e 23                	jle    0x40ad99
40ad76:	3b d9                	cmp    %ecx,%ebx
40ad78:	7c 1f                	jl     0x40ad99
40ad7a:	33 c0                	xor    %eax,%eax
40ad7c:	39 45 08             	cmp    %eax,0x8(%ebp)
40ad7f:	0f 95 c0             	setne  %al
40ad82:	50                   	push   %eax
40ad83:	ff 75 08             	push   0x8(%ebp)
40ad86:	51                   	push   %ecx
40ad87:	57                   	push   %edi
40ad88:	6a 09                	push   $0x9
40ad8a:	ff 75 fc             	push   -0x4(%ebp)
40ad8d:	e8 f2 df ff ff       	call   0x408d84
40ad92:	83 c4 18             	add    $0x18,%esp
40ad95:	85 c0                	test   %eax,%eax
40ad97:	75 0e                	jne    0x40ada7
40ad99:	8b 46 0c             	mov    0xc(%esi),%eax
40ad9c:	3b 58 04             	cmp    0x4(%eax),%ebx
40ad9f:	72 0e                	jb     0x40adaf
40ada1:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
40ada5:	74 08                	je     0x40adaf
40ada7:	8b 46 0c             	mov    0xc(%esi),%eax
40adaa:	8b 40 04             	mov    0x4(%eax),%eax
40adad:	eb 45                	jmp    0x40adf4
40adaf:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
40adb3:	c7 46 18 2a 00 00 00 	movl   $0x2a,0x18(%esi)
40adba:	e9 7c ff ff ff       	jmp    0x40ad3b
40adbf:	33 c0                	xor    %eax,%eax
40adc1:	39 45 08             	cmp    %eax,0x8(%ebp)
40adc4:	0f 95 c0             	setne  %al
40adc7:	50                   	push   %eax
40adc8:	ff 75 08             	push   0x8(%ebp)
40adcb:	6a 01                	push   $0x1
40adcd:	57                   	push   %edi
40adce:	6a 09                	push   $0x9
40add0:	ff 75 fc             	push   -0x4(%ebp)
40add3:	e8 ac df ff ff       	call   0x408d84
40add8:	83 c4 18             	add    $0x18,%esp
40addb:	85 c0                	test   %eax,%eax
40addd:	74 d0                	je     0x40adaf
40addf:	33 c0                	xor    %eax,%eax
40ade1:	40                   	inc    %eax
40ade2:	eb 10                	jmp    0x40adf4
40ade4:	33 d2                	xor    %edx,%edx
40ade6:	89 15 90 73 41 00    	mov    %edx,0x417390
40adec:	89 15 94 73 41 00    	mov    %edx,0x417394
40adf2:	33 c0                	xor    %eax,%eax
40adf4:	5f                   	pop    %edi
40adf5:	5e                   	pop    %esi
40adf6:	5b                   	pop    %ebx
40adf7:	c9                   	leave
40adf8:	c3                   	ret
40adf9:	8b ff                	mov    %edi,%edi
40adfb:	55                   	push   %ebp
40adfc:	8b ec                	mov    %esp,%ebp
40adfe:	8b 45 08             	mov    0x8(%ebp),%eax
40ae01:	85 c0                	test   %eax,%eax
40ae03:	75 15                	jne    0x40ae1a
40ae05:	e8 46 cb ff ff       	call   0x407950
40ae0a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ae10:	e8 07 af ff ff       	call   0x405d1c
40ae15:	83 c8 ff             	or     $0xffffffff,%eax
40ae18:	5d                   	pop    %ebp
40ae19:	c3                   	ret
40ae1a:	8b 40 10             	mov    0x10(%eax),%eax
40ae1d:	90                   	nop
40ae1e:	5d                   	pop    %ebp
40ae1f:	c3                   	ret
40ae20:	8b ff                	mov    %edi,%edi
40ae22:	55                   	push   %ebp
40ae23:	8b ec                	mov    %esp,%ebp
40ae25:	81 ec 18 01 00 00    	sub    $0x118,%esp
40ae2b:	a1 14 60 41 00       	mov    0x416014,%eax
40ae30:	33 c5                	xor    %ebp,%eax
40ae32:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ae35:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ae38:	53                   	push   %ebx
40ae39:	8b 5d 14             	mov    0x14(%ebp),%ebx
40ae3c:	56                   	push   %esi
40ae3d:	8b 75 08             	mov    0x8(%ebp),%esi
40ae40:	89 b5 fc fe ff ff    	mov    %esi,-0x104(%ebp)
40ae46:	89 9d f8 fe ff ff    	mov    %ebx,-0x108(%ebp)
40ae4c:	57                   	push   %edi
40ae4d:	8b 7d 10             	mov    0x10(%ebp),%edi
40ae50:	89 bd 00 ff ff ff    	mov    %edi,-0x100(%ebp)
40ae56:	85 f6                	test   %esi,%esi
40ae58:	75 25                	jne    0x40ae7f
40ae5a:	85 c9                	test   %ecx,%ecx
40ae5c:	74 21                	je     0x40ae7f
40ae5e:	e8 ed ca ff ff       	call   0x407950
40ae63:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ae69:	e8 ae ae ff ff       	call   0x405d1c
40ae6e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ae71:	5f                   	pop    %edi
40ae72:	5e                   	pop    %esi
40ae73:	33 cd                	xor    %ebp,%ecx
40ae75:	5b                   	pop    %ebx
40ae76:	e8 ba 87 ff ff       	call   0x403635
40ae7b:	8b e5                	mov    %ebp,%esp
40ae7d:	5d                   	pop    %ebp
40ae7e:	c3                   	ret
40ae7f:	85 ff                	test   %edi,%edi
40ae81:	74 db                	je     0x40ae5e
40ae83:	85 db                	test   %ebx,%ebx
40ae85:	74 d7                	je     0x40ae5e
40ae87:	c7 85 e8 fe ff ff 00 	movl   $0x0,-0x118(%ebp)
40ae8e:	00 00 00
40ae91:	83 f9 02             	cmp    $0x2,%ecx
40ae94:	72 d8                	jb     0x40ae6e
40ae96:	49                   	dec    %ecx
40ae97:	0f af cf             	imul   %edi,%ecx
40ae9a:	03 ce                	add    %esi,%ecx
40ae9c:	89 8d 08 ff ff ff    	mov    %ecx,-0xf8(%ebp)
40aea2:	8b c1                	mov    %ecx,%eax
40aea4:	33 d2                	xor    %edx,%edx
40aea6:	2b c6                	sub    %esi,%eax
40aea8:	f7 f7                	div    %edi
40aeaa:	40                   	inc    %eax
40aeab:	83 f8 08             	cmp    $0x8,%eax
40aeae:	0f 87 b6 00 00 00    	ja     0x40af6a
40aeb4:	3b ce                	cmp    %esi,%ecx
40aeb6:	0f 86 27 04 00 00    	jbe    0x40b2e3
40aebc:	8d 14 37             	lea    (%edi,%esi,1),%edx
40aebf:	89 95 f0 fe ff ff    	mov    %edx,-0x110(%ebp)
40aec5:	8b c6                	mov    %esi,%eax
40aec7:	8b f2                	mov    %edx,%esi
40aec9:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40aecf:	3b f1                	cmp    %ecx,%esi
40aed1:	77 2f                	ja     0x40af02
40aed3:	50                   	push   %eax
40aed4:	56                   	push   %esi
40aed5:	8b cb                	mov    %ebx,%ecx
40aed7:	ff 15 18 f1 40 00    	call   *0x40f118
40aedd:	ff d3                	call   *%ebx
40aedf:	83 c4 08             	add    $0x8,%esp
40aee2:	85 c0                	test   %eax,%eax
40aee4:	7e 0a                	jle    0x40aef0
40aee6:	8b c6                	mov    %esi,%eax
40aee8:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40aeee:	eb 06                	jmp    0x40aef6
40aef0:	8b 85 04 ff ff ff    	mov    -0xfc(%ebp),%eax
40aef6:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40aefc:	03 f7                	add    %edi,%esi
40aefe:	3b f1                	cmp    %ecx,%esi
40af00:	76 d1                	jbe    0x40aed3
40af02:	89 bd f4 fe ff ff    	mov    %edi,-0x10c(%ebp)
40af08:	8b d1                	mov    %ecx,%edx
40af0a:	3b c1                	cmp    %ecx,%eax
40af0c:	74 3b                	je     0x40af49
40af0e:	2b c1                	sub    %ecx,%eax
40af10:	8b df                	mov    %edi,%ebx
40af12:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40af18:	eb 06                	jmp    0x40af20
40af1a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40af20:	8a 0c 10             	mov    (%eax,%edx,1),%cl
40af23:	8d 52 01             	lea    0x1(%edx),%edx
40af26:	8b b5 04 ff ff ff    	mov    -0xfc(%ebp),%esi
40af2c:	8a 42 ff             	mov    -0x1(%edx),%al
40af2f:	88 44 16 ff          	mov    %al,-0x1(%esi,%edx,1)
40af33:	8b c6                	mov    %esi,%eax
40af35:	88 4a ff             	mov    %cl,-0x1(%edx)
40af38:	83 eb 01             	sub    $0x1,%ebx
40af3b:	75 e3                	jne    0x40af20
40af3d:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40af43:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40af49:	8b b5 fc fe ff ff    	mov    -0x104(%ebp),%esi
40af4f:	2b cf                	sub    %edi,%ecx
40af51:	8b 95 f0 fe ff ff    	mov    -0x110(%ebp),%edx
40af57:	89 8d 08 ff ff ff    	mov    %ecx,-0xf8(%ebp)
40af5d:	3b ce                	cmp    %esi,%ecx
40af5f:	0f 87 60 ff ff ff    	ja     0x40aec5
40af65:	e9 79 03 00 00       	jmp    0x40b2e3
40af6a:	d1 e8                	shr    $1,%eax
40af6c:	8b cb                	mov    %ebx,%ecx
40af6e:	0f af c7             	imul   %edi,%eax
40af71:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40af77:	8d 3c 30             	lea    (%eax,%esi,1),%edi
40af7a:	57                   	push   %edi
40af7b:	56                   	push   %esi
40af7c:	89 bd ec fe ff ff    	mov    %edi,-0x114(%ebp)
40af82:	ff 15 18 f1 40 00    	call   *0x40f118
40af88:	ff d3                	call   *%ebx
40af8a:	8b b5 00 ff ff ff    	mov    -0x100(%ebp),%esi
40af90:	83 c4 08             	add    $0x8,%esp
40af93:	85 c0                	test   %eax,%eax
40af95:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40af9b:	7e 4d                	jle    0x40afea
40af9d:	89 b5 f4 fe ff ff    	mov    %esi,-0x10c(%ebp)
40afa3:	89 bd f0 fe ff ff    	mov    %edi,-0x110(%ebp)
40afa9:	3b c7                	cmp    %edi,%eax
40afab:	74 3d                	je     0x40afea
40afad:	8b 9d f4 fe ff ff    	mov    -0x10c(%ebp),%ebx
40afb3:	8b f7                	mov    %edi,%esi
40afb5:	8b bd 04 ff ff ff    	mov    -0xfc(%ebp),%edi
40afbb:	eb 03                	jmp    0x40afc0
40afbd:	8d 49 00             	lea    0x0(%ecx),%ecx
40afc0:	8a 06                	mov    (%esi),%al
40afc2:	8b d6                	mov    %esi,%edx
40afc4:	2b d7                	sub    %edi,%edx
40afc6:	8a 0a                	mov    (%edx),%cl
40afc8:	88 02                	mov    %al,(%edx)
40afca:	88 0e                	mov    %cl,(%esi)
40afcc:	46                   	inc    %esi
40afcd:	83 eb 01             	sub    $0x1,%ebx
40afd0:	75 ee                	jne    0x40afc0
40afd2:	8b bd ec fe ff ff    	mov    -0x114(%ebp),%edi
40afd8:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40afde:	8b b5 00 ff ff ff    	mov    -0x100(%ebp),%esi
40afe4:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40afea:	ff b5 08 ff ff ff    	push   -0xf8(%ebp)
40aff0:	8b cb                	mov    %ebx,%ecx
40aff2:	50                   	push   %eax
40aff3:	ff 15 18 f1 40 00    	call   *0x40f118
40aff9:	ff d3                	call   *%ebx
40affb:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b001:	83 c4 08             	add    $0x8,%esp
40b004:	85 c0                	test   %eax,%eax
40b006:	7e 49                	jle    0x40b051
40b008:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40b00e:	89 b5 ec fe ff ff    	mov    %esi,-0x114(%ebp)
40b014:	8b f2                	mov    %edx,%esi
40b016:	3b c2                	cmp    %edx,%eax
40b018:	74 37                	je     0x40b051
40b01a:	8b 9d ec fe ff ff    	mov    -0x114(%ebp),%ebx
40b020:	2b c2                	sub    %edx,%eax
40b022:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
40b028:	8b d0                	mov    %eax,%edx
40b02a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40b030:	8a 06                	mov    (%esi),%al
40b032:	8d 76 01             	lea    0x1(%esi),%esi
40b035:	8a 4c 32 ff          	mov    -0x1(%edx,%esi,1),%cl
40b039:	88 44 32 ff          	mov    %al,-0x1(%edx,%esi,1)
40b03d:	88 4e ff             	mov    %cl,-0x1(%esi)
40b040:	83 eb 01             	sub    $0x1,%ebx
40b043:	75 eb                	jne    0x40b030
40b045:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40b04b:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b051:	52                   	push   %edx
40b052:	57                   	push   %edi
40b053:	8b cb                	mov    %ebx,%ecx
40b055:	ff 15 18 f1 40 00    	call   *0x40f118
40b05b:	ff d3                	call   *%ebx
40b05d:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b063:	83 c4 08             	add    $0x8,%esp
40b066:	85 c0                	test   %eax,%eax
40b068:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b06e:	7e 35                	jle    0x40b0a5