40ad21:	89 58 14             	mov    %ebx,0x14(%eax)
40ad24:	39 50 24             	cmp    %edx,0x24(%eax)
40ad27:	75 06                	jne    0x40ad2f
40ad29:	8d 58 1c             	lea    0x1c(%eax),%ebx
40ad2c:	89 58 24             	mov    %ebx,0x24(%eax)
40ad2f:	41                   	inc    %ecx
40ad30:	83 c7 28             	add    $0x28,%edi
40ad33:	3b 4e 14             	cmp    0x14(%esi),%ecx
40ad36:	7c dd                	jl     0x40ad15
40ad38:	5f                   	pop    %edi
40ad39:	5e                   	pop    %esi
40ad3a:	5b                   	pop    %ebx
40ad3b:	5d                   	pop    %ebp
40ad3c:	c2 0c 00             	ret    $0xc
40ad3f:	55                   	push   %ebp
40ad40:	8b ec                	mov    %esp,%ebp
40ad42:	8b 55 08             	mov    0x8(%ebp),%edx
40ad45:	83 ec 50             	sub    $0x50,%esp
40ad48:	56                   	push   %esi
40ad49:	8b f1                	mov    %ecx,%esi
40ad4b:	85 d2                	test   %edx,%edx
40ad4d:	0f 8e 8b 04 00 00    	jle    0x40b1de
40ad53:	83 fa 02             	cmp    $0x2,%edx
40ad56:	53                   	push   %ebx
40ad57:	57                   	push   %edi
40ad58:	0f 8e 18 04 00 00    	jle    0x40b176
40ad5e:	83 fa 03             	cmp    $0x3,%edx
40ad61:	0f 84 57 03 00 00    	je     0x40b0be
40ad67:	83 fa 04             	cmp    $0x4,%edx
40ad6a:	0f 84 32 02 00 00    	je     0x40afa2
40ad70:	83 fa 05             	cmp    $0x5,%edx
40ad73:	74 64                	je     0x40add9
40ad75:	83 fa 06             	cmp    $0x6,%edx
40ad78:	0f 85 5e 04 00 00    	jne    0x40b1dc
40ad7e:	8b 4e 24             	mov    0x24(%esi),%ecx
40ad81:	8b 46 14             	mov    0x14(%esi),%eax
40ad84:	8b 7e 10             	mov    0x10(%esi),%edi
40ad87:	33 db                	xor    %ebx,%ebx
40ad89:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ad8c:	8d 14 09             	lea    (%ecx,%ecx,1),%edx
40ad8f:	89 8f 20 c0 03 00    	mov    %ecx,0x3c020(%edi)
40ad95:	81 f9 00 e0 01 00    	cmp    $0x1e000,%ecx
40ad9b:	0f 83 3b 04 00 00    	jae    0x40b1dc
40ada1:	21 5d 08             	and    %ebx,0x8(%ebp)
40ada4:	85 c0                	test   %eax,%eax
40ada6:	0f 8e 30 04 00 00    	jle    0x40b1dc
40adac:	8b 7d 08             	mov    0x8(%ebp),%edi
40adaf:	32 c0                	xor    %al,%al
40adb1:	03 f9                	add    %ecx,%edi
40adb3:	eb 10                	jmp    0x40adc5
40adb5:	8b 56 10             	mov    0x10(%esi),%edx
40adb8:	2a 04 1a             	sub    (%edx,%ebx,1),%al
40adbb:	43                   	inc    %ebx
40adbc:	88 04 3a             	mov    %al,(%edx,%edi,1)
40adbf:	03 7d e4             	add    -0x1c(%ebp),%edi
40adc2:	8d 14 09             	lea    (%ecx,%ecx,1),%edx
40adc5:	3b fa                	cmp    %edx,%edi
40adc7:	7c ec                	jl     0x40adb5
40adc9:	ff 45 08             	incl   0x8(%ebp)
40adcc:	8b 45 08             	mov    0x8(%ebp),%eax
40adcf:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
40add2:	7c d8                	jl     0x40adac
40add4:	e9 03 04 00 00       	jmp    0x40b1dc
40add9:	8b 7e 24             	mov    0x24(%esi),%edi
40addc:	8b 46 14             	mov    0x14(%esi),%eax
40addf:	8b 76 10             	mov    0x10(%esi),%esi
40ade2:	8d 0c 3e             	lea    (%esi,%edi,1),%ecx
40ade5:	89 7d d8             	mov    %edi,-0x28(%ebp)
40ade8:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40adeb:	89 75 ec             	mov    %esi,-0x14(%ebp)
40adee:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40adf1:	89 be 20 c0 03 00    	mov    %edi,0x3c020(%esi)
40adf7:	81 ff 00 e0 01 00    	cmp    $0x1e000,%edi
40adfd:	0f 83 d9 03 00 00    	jae    0x40b1dc
40ae03:	33 db                	xor    %ebx,%ebx
40ae05:	3b c3                	cmp    %ebx,%eax
40ae07:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40ae0a:	0f 8e cc 03 00 00    	jle    0x40b1dc
40ae10:	eb 05                	jmp    0x40ae17
40ae12:	8b 7d d8             	mov    -0x28(%ebp),%edi
40ae15:	33 db                	xor    %ebx,%ebx
40ae17:	6a 1c                	push   $0x1c
40ae19:	8d 45 b0             	lea    -0x50(%ebp),%eax
40ae1c:	53                   	push   %ebx
40ae1d:	50                   	push   %eax
40ae1e:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40ae21:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40ae24:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40ae27:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40ae2a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40ae2d:	89 5d 08             	mov    %ebx,0x8(%ebp)
40ae30:	e8 cb f3 00 00       	call   0x41a200
40ae35:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ae38:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40ae3c:	83 c4 0c             	add    $0xc,%esp
40ae3f:	3b c7                	cmp    %edi,%eax
40ae41:	e9 3f 01 00 00       	jmp    0x40af85
40ae46:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ae49:	8b 55 fc             	mov    -0x4(%ebp),%edx
40ae4c:	8b c8                	mov    %eax,%ecx
40ae4e:	2b 4d f4             	sub    -0xc(%ebp),%ecx
40ae51:	8b fb                	mov    %ebx,%edi
40ae53:	8b d9                	mov    %ecx,%ebx
40ae55:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40ae58:	0f af d3             	imul   %ebx,%edx
40ae5b:	0f b6 09             	movzbl (%ecx),%ecx
40ae5e:	8b f7                	mov    %edi,%esi
40ae60:	0f af 75 08          	imul   0x8(%ebp),%esi
40ae64:	03 f2                	add    %edx,%esi
40ae66:	8b 55 f8             	mov    -0x8(%ebp),%edx
40ae69:	0f af d0             	imul   %eax,%edx
40ae6c:	ff 45 ec             	incl   -0x14(%ebp)
40ae6f:	03 f2                	add    %edx,%esi
40ae71:	8b 55 dc             	mov    -0x24(%ebp),%edx
40ae74:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ae77:	8d 04 d6             	lea    (%esi,%edx,8),%eax
40ae7a:	8b 75 d0             	mov    -0x30(%ebp),%esi
40ae7d:	c1 e8 03             	shr    $0x3,%eax
40ae80:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40ae83:	25 ff 00 00 00       	and    $0xff,%eax
40ae88:	2b c1                	sub    %ecx,%eax
40ae8a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40ae8d:	88 04 31             	mov    %al,(%ecx,%esi,1)
40ae90:	0f be 75 cc          	movsbl -0x34(%ebp),%esi
40ae94:	8a c8                	mov    %al,%cl
40ae96:	2a ca                	sub    %dl,%cl
40ae98:	0f be c9             	movsbl %cl,%ecx
40ae9b:	c1 e6 03             	shl    $0x3,%esi
40ae9e:	56                   	push   %esi
40ae9f:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40aea2:	89 45 dc             	mov    %eax,-0x24(%ebp)
40aea5:	e8 2b 1a 01 00       	call   0x41c8d5
40aeaa:	01 45 b0             	add    %eax,-0x50(%ebp)
40aead:	8b c6                	mov    %esi,%eax
40aeaf:	2b 45 f4             	sub    -0xc(%ebp),%eax
40aeb2:	50                   	push   %eax
40aeb3:	e8 1d 1a 01 00       	call   0x41c8d5
40aeb8:	01 45 b4             	add    %eax,-0x4c(%ebp)
40aebb:	8b 45 f4             	mov    -0xc(%ebp),%eax
40aebe:	03 c6                	add    %esi,%eax
40aec0:	50                   	push   %eax
40aec1:	e8 0f 1a 01 00       	call   0x41c8d5
40aec6:	01 45 b8             	add    %eax,-0x48(%ebp)
40aec9:	8b c6                	mov    %esi,%eax
40aecb:	2b c3                	sub    %ebx,%eax
40aecd:	50                   	push   %eax
40aece:	e8 02 1a 01 00       	call   0x41c8d5
40aed3:	01 45 bc             	add    %eax,-0x44(%ebp)
40aed6:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
40aed9:	50                   	push   %eax
40aeda:	e8 f6 19 01 00       	call   0x41c8d5
40aedf:	01 45 c0             	add    %eax,-0x40(%ebp)
40aee2:	8b c6                	mov    %esi,%eax
40aee4:	2b c7                	sub    %edi,%eax
40aee6:	50                   	push   %eax
40aee7:	e8 e9 19 01 00       	call   0x41c8d5
40aeec:	01 45 c4             	add    %eax,-0x3c(%ebp)
40aeef:	03 f7                	add    %edi,%esi
40aef1:	56                   	push   %esi
40aef2:	e8 de 19 01 00       	call   0x41c8d5
40aef7:	01 45 c8             	add    %eax,-0x38(%ebp)
40aefa:	83 c4 1c             	add    $0x1c,%esp
40aefd:	f6 45 e4 1f          	testb  $0x1f,-0x1c(%ebp)
40af01:	75 76                	jne    0x40af79
40af03:	8b 55 b0             	mov    -0x50(%ebp),%edx
40af06:	33 ff                	xor    %edi,%edi
40af08:	33 c9                	xor    %ecx,%ecx
40af0a:	89 7d b0             	mov    %edi,-0x50(%ebp)
40af0d:	41                   	inc    %ecx
40af0e:	8d 44 8d b0          	lea    -0x50(%ebp,%ecx,4),%eax
40af12:	8b 30                	mov    (%eax),%esi
40af14:	3b f2                	cmp    %edx,%esi
40af16:	73 04                	jae    0x40af1c
40af18:	8b d6                	mov    %esi,%edx
40af1a:	8b f9                	mov    %ecx,%edi
40af1c:	83 20 00             	andl   $0x0,(%eax)
40af1f:	41                   	inc    %ecx
40af20:	83 f9 07             	cmp    $0x7,%ecx
40af23:	72 e9                	jb     0x40af0e
40af25:	8b c7                	mov    %edi,%eax
40af27:	48                   	dec    %eax
40af28:	74 46                	je     0x40af70
40af2a:	48                   	dec    %eax
40af2b:	74 38                	je     0x40af65
40af2d:	48                   	dec    %eax
40af2e:	74 2a                	je     0x40af5a
40af30:	48                   	dec    %eax
40af31:	74 1c                	je     0x40af4f
40af33:	48                   	dec    %eax
40af34:	74 0e                	je     0x40af44
40af36:	48                   	dec    %eax
40af37:	75 40                	jne    0x40af79
40af39:	83 7d 08 10          	cmpl   $0x10,0x8(%ebp)
40af3d:	7d 3a                	jge    0x40af79
40af3f:	ff 45 08             	incl   0x8(%ebp)
40af42:	eb 35                	jmp    0x40af79
40af44:	83 7d 08 f0          	cmpl   $0xfffffff0,0x8(%ebp)
40af48:	7c 2f                	jl     0x40af79
40af4a:	ff 4d 08             	decl   0x8(%ebp)
40af4d:	eb 2a                	jmp    0x40af79
40af4f:	83 7d fc 10          	cmpl   $0x10,-0x4(%ebp)
40af53:	7d 24                	jge    0x40af79
40af55:	ff 45 fc             	incl   -0x4(%ebp)
40af58:	eb 1f                	jmp    0x40af79
40af5a:	83 7d fc f0          	cmpl   $0xfffffff0,-0x4(%ebp)
40af5e:	7c 19                	jl     0x40af79
40af60:	ff 4d fc             	decl   -0x4(%ebp)
40af63:	eb 14                	jmp    0x40af79
40af65:	83 7d f8 10          	cmpl   $0x10,-0x8(%ebp)
40af69:	7d 0e                	jge    0x40af79
40af6b:	ff 45 f8             	incl   -0x8(%ebp)
40af6e:	eb 09                	jmp    0x40af79
40af70:	83 7d f8 f0          	cmpl   $0xfffffff0,-0x8(%ebp)
40af74:	7c 03                	jl     0x40af79
40af76:	ff 4d f8             	decl   -0x8(%ebp)
40af79:	8b 45 e8             	mov    -0x18(%ebp),%eax
40af7c:	03 45 d4             	add    -0x2c(%ebp),%eax
40af7f:	ff 45 e4             	incl   -0x1c(%ebp)
40af82:	3b 45 d8             	cmp    -0x28(%ebp),%eax
40af85:	89 45 e8             	mov    %eax,-0x18(%ebp)
40af88:	0f 8c b8 fe ff ff    	jl     0x40ae46
40af8e:	ff 45 f0             	incl   -0x10(%ebp)
40af91:	8b 45 f0             	mov    -0x10(%ebp),%eax
40af94:	3b 45 d4             	cmp    -0x2c(%ebp),%eax
40af97:	0f 8c 75 fe ff ff    	jl     0x40ae12
40af9d:	e9 3a 02 00 00       	jmp    0x40b1dc
40afa2:	8b 46 24             	mov    0x24(%esi),%eax
40afa5:	8b 4e 14             	mov    0x14(%esi),%ecx
40afa8:	8b 56 18             	mov    0x18(%esi),%edx
40afab:	8b 76 10             	mov    0x10(%esi),%esi
40afae:	83 e9 03             	sub    $0x3,%ecx
40afb1:	89 45 f0             	mov    %eax,-0x10(%ebp)
40afb4:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40afb7:	89 55 d0             	mov    %edx,-0x30(%ebp)
40afba:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40afbd:	8d 1c 06             	lea    (%esi,%eax,1),%ebx
40afc0:	89 86 20 c0 03 00    	mov    %eax,0x3c020(%esi)
40afc6:	3d 00 e0 01 00       	cmp    $0x1e000,%eax
40afcb:	0f 83 0b 02 00 00    	jae    0x40b1dc
40afd1:	85 d2                	test   %edx,%edx
40afd3:	0f 8c 03 02 00 00    	jl     0x40b1dc
40afd9:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40afdd:	f7 d9                	neg    %ecx
40afdf:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40afe2:	8b 45 f0             	mov    -0x10(%ebp),%eax
40afe5:	83 65 08 00          	andl   $0x0,0x8(%ebp)
40afe9:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40afec:	0f 8d 9a 00 00 00    	jge    0x40b08c
40aff2:	8b 45 ec             	mov    -0x14(%ebp),%eax
40aff5:	89 45 e8             	mov    %eax,-0x18(%ebp)
40aff8:	8d 34 03             	lea    (%ebx,%eax,1),%esi
40affb:	8b 45 f0             	mov    -0x10(%ebp),%eax
40affe:	2b 45 f8             	sub    -0x8(%ebp),%eax
40b001:	6a 03                	push   $0x3
40b003:	48                   	dec    %eax
40b004:	33 d2                	xor    %edx,%edx
40b006:	59                   	pop    %ecx
40b007:	f7 f1                	div    %ecx
40b009:	40                   	inc    %eax
40b00a:	89 45 f4             	mov    %eax,-0xc(%ebp)
40b00d:	83 7d e8 03          	cmpl   $0x3,-0x18(%ebp)
40b011:	7c 56                	jl     0x40b069
40b013:	0f b6 3e             	movzbl (%esi),%edi
40b016:	0f b6 46 fd          	movzbl -0x3(%esi),%eax
40b01a:	89 7d dc             	mov    %edi,-0x24(%ebp)
40b01d:	2b f8                	sub    %eax,%edi
40b01f:	03 7d 08             	add    0x8(%ebp),%edi
40b022:	89 45 e0             	mov    %eax,-0x20(%ebp)
40b025:	8b c7                	mov    %edi,%eax
40b027:	2b 45 08             	sub    0x8(%ebp),%eax
40b02a:	50                   	push   %eax
40b02b:	e8 a5 18 01 00       	call   0x41c8d5
40b030:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b033:	8b c7                	mov    %edi,%eax
40b035:	2b 45 dc             	sub    -0x24(%ebp),%eax
40b038:	50                   	push   %eax
40b039:	e8 97 18 01 00       	call   0x41c8d5
40b03e:	2b 7d e0             	sub    -0x20(%ebp),%edi
40b041:	89 45 d8             	mov    %eax,-0x28(%ebp)
40b044:	57                   	push   %edi
40b045:	e8 8b 18 01 00       	call   0x41c8d5
40b04a:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40b04d:	83 c4 0c             	add    $0xc,%esp
40b050:	39 4d d4             	cmp    %ecx,-0x2c(%ebp)
40b053:	7f 05                	jg     0x40b05a
40b055:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
40b058:	7e 0f                	jle    0x40b069
40b05a:	39 45 d8             	cmp    %eax,-0x28(%ebp)
40b05d:	7f 05                	jg     0x40b064
40b05f:	8b 45 dc             	mov    -0x24(%ebp),%eax
40b062:	eb 08                	jmp    0x40b06c
40b064:	8b 45 e0             	mov    -0x20(%ebp),%eax
40b067:	eb 03                	jmp    0x40b06c
40b069:	8b 45 08             	mov    0x8(%ebp),%eax
40b06c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40b06f:	2a 01                	sub    (%ecx),%al
40b071:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40b074:	ff 45 e4             	incl   -0x1c(%ebp)
40b077:	83 45 e8 03          	addl   $0x3,-0x18(%ebp)
40b07b:	0f b6 c0             	movzbl %al,%eax
40b07e:	88 04 0e             	mov    %al,(%esi,%ecx,1)
40b081:	83 c6 03             	add    $0x3,%esi
40b084:	ff 4d f4             	decl   -0xc(%ebp)
40b087:	89 45 08             	mov    %eax,0x8(%ebp)
40b08a:	75 81                	jne    0x40b00d
40b08c:	ff 45 f8             	incl   -0x8(%ebp)
40b08f:	ff 45 ec             	incl   -0x14(%ebp)
40b092:	83 7d f8 03          	cmpl   $0x3,-0x8(%ebp)
40b096:	0f 8c 46 ff ff ff    	jl     0x40afe2
40b09c:	8b 55 f0             	mov    -0x10(%ebp),%edx
40b09f:	8b 45 d0             	mov    -0x30(%ebp),%eax
40b0a2:	83 c2 fe             	add    $0xfffffffe,%edx
40b0a5:	eb 0e                	jmp    0x40b0b5
40b0a7:	8a 4c 18 01          	mov    0x1(%eax,%ebx,1),%cl
40b0ab:	00 0c 18             	add    %cl,(%eax,%ebx,1)
40b0ae:	00 4c 18 02          	add    %cl,0x2(%eax,%ebx,1)
40b0b2:	83 c0 03             	add    $0x3,%eax
40b0b5:	3b c2                	cmp    %edx,%eax
40b0b7:	7c ee                	jl     0x40b0a7
40b0b9:	e9 1e 01 00 00       	jmp    0x40b1dc
40b0be:	8b 46 10             	mov    0x10(%esi),%eax
40b0c1:	89 45 08             	mov    %eax,0x8(%ebp)
40b0c4:	8b 46 24             	mov    0x24(%esi),%eax
40b0c7:	3d 00 c0 03 00       	cmp    $0x3c000,%eax
40b0cc:	0f 83 0a 01 00 00    	jae    0x40b1dc
40b0d2:	83 f8 15             	cmp    $0x15,%eax
40b0d5:	0f 8c 01 01 00 00    	jl     0x40b1dc
40b0db:	8b 5e 2c             	mov    0x2c(%esi),%ebx
40b0de:	83 c0 eb             	add    $0xffffffeb,%eax
40b0e1:	c1 eb 04             	shr    $0x4,%ebx
40b0e4:	85 c0                	test   %eax,%eax
40b0e6:	0f 8e f0 00 00 00    	jle    0x40b1dc
40b0ec:	48                   	dec    %eax
40b0ed:	c1 e8 04             	shr    $0x4,%eax
40b0f0:	40                   	inc    %eax
40b0f1:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b0f4:	8b 45 08             	mov    0x8(%ebp),%eax
40b0f7:	0f b6 00             	movzbl (%eax),%eax
40b0fa:	83 e0 1f             	and    $0x1f,%eax
40b0fd:	83 e8 10             	sub    $0x10,%eax
40b100:	78 68                	js     0x40b16a
40b102:	8a 80 b0 f0 42 00    	mov    0x42f0b0(%eax),%al
40b108:	84 c0                	test   %al,%al
40b10a:	74 5e                	je     0x40b16a
40b10c:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40b110:	0f b6 c0             	movzbl %al,%eax
40b113:	6a 12                	push   $0x12
40b115:	89 45 cc             	mov    %eax,-0x34(%ebp)
40b118:	5f                   	pop    %edi
40b119:	8b 4d e4             	mov    -0x1c(%ebp),%ecx