40aad9:	59                   	pop    %ecx
40aada:	59                   	pop    %ecx
40aadb:	85 ff                	test   %edi,%edi
40aadd:	75 09                	jne    0x40aae8
40aadf:	53                   	push   %ebx
40aae0:	e8 3f ed ff ff       	call   0x409824
40aae5:	59                   	pop    %ecx
40aae6:	eb 2b                	jmp    0x40ab13
40aae8:	57                   	push   %edi
40aae9:	ff 35 5c 30 42 00    	push   0x42305c
40aaef:	e8 42 14 00 00       	call   0x40bf36
40aaf4:	85 c0                	test   %eax,%eax
40aaf6:	75 03                	jne    0x40aafb
40aaf8:	57                   	push   %edi
40aaf9:	eb e5                	jmp    0x40aae0
40aafb:	68 bc 41 42 00       	push   $0x4241bc
40ab00:	57                   	push   %edi
40ab01:	e8 8e fd ff ff       	call   0x40a894
40ab06:	53                   	push   %ebx
40ab07:	e8 18 ed ff ff       	call   0x409824
40ab0c:	83 c4 0c             	add    $0xc,%esp
40ab0f:	85 ff                	test   %edi,%edi
40ab11:	75 09                	jne    0x40ab1c
40ab13:	56                   	push   %esi
40ab14:	ff 15 9c b0 41 00    	call   *0x41b09c
40ab1a:	eb 09                	jmp    0x40ab25
40ab1c:	56                   	push   %esi
40ab1d:	ff 15 9c b0 41 00    	call   *0x41b09c
40ab23:	8b df                	mov    %edi,%ebx
40ab25:	5f                   	pop    %edi
40ab26:	5e                   	pop    %esi
40ab27:	8b c3                	mov    %ebx,%eax
40ab29:	5b                   	pop    %ebx
40ab2a:	c3                   	ret
40ab2b:	68 0d a9 40 00       	push   $0x40a90d
40ab30:	e8 ff 12 00 00       	call   0x40be34
40ab35:	a3 5c 30 42 00       	mov    %eax,0x42305c
40ab3a:	83 f8 ff             	cmp    $0xffffffff,%eax
40ab3d:	75 03                	jne    0x40ab42
40ab3f:	32 c0                	xor    %al,%al
40ab41:	c3                   	ret
40ab42:	e8 5f ff ff ff       	call   0x40aaa6
40ab47:	85 c0                	test   %eax,%eax
40ab49:	75 09                	jne    0x40ab54
40ab4b:	50                   	push   %eax
40ab4c:	e8 06 00 00 00       	call   0x40ab57
40ab51:	59                   	pop    %ecx
40ab52:	eb eb                	jmp    0x40ab3f
40ab54:	b0 01                	mov    $0x1,%al
40ab56:	c3                   	ret
40ab57:	a1 5c 30 42 00       	mov    0x42305c,%eax
40ab5c:	83 f8 ff             	cmp    $0xffffffff,%eax
40ab5f:	74 0d                	je     0x40ab6e
40ab61:	50                   	push   %eax
40ab62:	e8 23 13 00 00       	call   0x40be8a
40ab67:	83 0d 5c 30 42 00 ff 	orl    $0xffffffff,0x42305c
40ab6e:	b0 01                	mov    $0x1,%al
40ab70:	c3                   	ret
40ab71:	8b ff                	mov    %edi,%edi
40ab73:	55                   	push   %ebp
40ab74:	8b ec                	mov    %esp,%ebp
40ab76:	56                   	push   %esi
40ab77:	8b 75 0c             	mov    0xc(%ebp),%esi
40ab7a:	8b 06                	mov    (%esi),%eax
40ab7c:	3b 05 bc 41 42 00    	cmp    0x4241bc,%eax
40ab82:	74 17                	je     0x40ab9b
40ab84:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ab87:	a1 20 38 42 00       	mov    0x423820,%eax
40ab8c:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40ab92:	75 07                	jne    0x40ab9b
40ab94:	e8 a6 64 00 00       	call   0x41103f
40ab99:	89 06                	mov    %eax,(%esi)
40ab9b:	5e                   	pop    %esi
40ab9c:	5d                   	pop    %ebp
40ab9d:	c3                   	ret
40ab9e:	8b ff                	mov    %edi,%edi
40aba0:	55                   	push   %ebp
40aba1:	8b ec                	mov    %esp,%ebp
40aba3:	56                   	push   %esi
40aba4:	8b 75 0c             	mov    0xc(%ebp),%esi
40aba7:	8b 06                	mov    (%esi),%eax
40aba9:	3b 05 c0 37 42 00    	cmp    0x4237c0,%eax
40abaf:	74 17                	je     0x40abc8
40abb1:	8b 4d 08             	mov    0x8(%ebp),%ecx
40abb4:	a1 20 38 42 00       	mov    0x423820,%eax
40abb9:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40abbf:	75 07                	jne    0x40abc8
40abc1:	e8 5b 4d 00 00       	call   0x40f921
40abc6:	89 06                	mov    %eax,(%esi)
40abc8:	5e                   	pop    %esi
40abc9:	5d                   	pop    %ebp
40abca:	c3                   	ret
40abcb:	8b ff                	mov    %edi,%edi
40abcd:	55                   	push   %ebp
40abce:	8b ec                	mov    %esp,%ebp
40abd0:	8b 45 08             	mov    0x8(%ebp),%eax
40abd3:	b9 ff 07 00 00       	mov    $0x7ff,%ecx
40abd8:	53                   	push   %ebx
40abd9:	56                   	push   %esi
40abda:	33 d2                	xor    %edx,%edx
40abdc:	8b 18                	mov    (%eax),%ebx
40abde:	8b 70 04             	mov    0x4(%eax),%esi
40abe1:	8b c6                	mov    %esi,%eax
40abe3:	c1 e8 14             	shr    $0x14,%eax
40abe6:	23 c1                	and    %ecx,%eax
40abe8:	57                   	push   %edi
40abe9:	3b c1                	cmp    %ecx,%eax
40abeb:	75 43                	jne    0x40ac30
40abed:	3b d2                	cmp    %edx,%edx
40abef:	75 3f                	jne    0x40ac30
40abf1:	8b fe                	mov    %esi,%edi
40abf3:	8b c3                	mov    %ebx,%eax
40abf5:	81 e7 ff ff 0f 00    	and    $0xfffff,%edi
40abfb:	0b c7                	or     %edi,%eax
40abfd:	75 03                	jne    0x40ac02
40abff:	40                   	inc    %eax
40ac00:	eb 30                	jmp    0x40ac32
40ac02:	8b ce                	mov    %esi,%ecx
40ac04:	8b c2                	mov    %edx,%eax
40ac06:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
40ac0c:	0b c1                	or     %ecx,%eax
40ac0e:	b8 00 00 08 00       	mov    $0x80000,%eax
40ac13:	74 0d                	je     0x40ac22
40ac15:	3b da                	cmp    %edx,%ebx
40ac17:	75 09                	jne    0x40ac22
40ac19:	3b f8                	cmp    %eax,%edi
40ac1b:	75 05                	jne    0x40ac22
40ac1d:	6a 04                	push   $0x4
40ac1f:	58                   	pop    %eax
40ac20:	eb 10                	jmp    0x40ac32
40ac22:	23 f0                	and    %eax,%esi
40ac24:	0b d6                	or     %esi,%edx
40ac26:	74 04                	je     0x40ac2c
40ac28:	6a 02                	push   $0x2
40ac2a:	eb f3                	jmp    0x40ac1f
40ac2c:	6a 03                	push   $0x3
40ac2e:	eb ef                	jmp    0x40ac1f
40ac30:	33 c0                	xor    %eax,%eax
40ac32:	5f                   	pop    %edi
40ac33:	5e                   	pop    %esi
40ac34:	5b                   	pop    %ebx
40ac35:	5d                   	pop    %ebp
40ac36:	c3                   	ret
40ac37:	8b ff                	mov    %edi,%edi
40ac39:	55                   	push   %ebp
40ac3a:	8b ec                	mov    %esp,%ebp
40ac3c:	8b 45 08             	mov    0x8(%ebp),%eax
40ac3f:	33 d2                	xor    %edx,%edx
40ac41:	8b 48 04             	mov    0x4(%eax),%ecx
40ac44:	8b c2                	mov    %edx,%eax
40ac46:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
40ac4c:	0b c1                	or     %ecx,%eax
40ac4e:	74 01                	je     0x40ac51
40ac50:	42                   	inc    %edx
40ac51:	8a c2                	mov    %dl,%al
40ac53:	5d                   	pop    %ebp
40ac54:	c3                   	ret
40ac55:	8b ff                	mov    %edi,%edi
40ac57:	55                   	push   %ebp
40ac58:	8b ec                	mov    %esp,%ebp
40ac5a:	83 ec 30             	sub    $0x30,%esp
40ac5d:	53                   	push   %ebx
40ac5e:	56                   	push   %esi
40ac5f:	57                   	push   %edi
40ac60:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40ac63:	33 db                	xor    %ebx,%ebx
40ac65:	85 ff                	test   %edi,%edi
40ac67:	79 02                	jns    0x40ac6b
40ac69:	8b fb                	mov    %ebx,%edi
40ac6b:	8b 75 0c             	mov    0xc(%ebp),%esi
40ac6e:	8d 4d d0             	lea    -0x30(%ebp),%ecx
40ac71:	ff 75 28             	push   0x28(%ebp)
40ac74:	88 1e                	mov    %bl,(%esi)
40ac76:	e8 36 aa ff ff       	call   0x4056b1
40ac7b:	8d 47 0b             	lea    0xb(%edi),%eax
40ac7e:	39 45 10             	cmp    %eax,0x10(%ebp)
40ac81:	77 14                	ja     0x40ac97
40ac83:	e8 7f d0 ff ff       	call   0x407d07
40ac88:	6a 22                	push   $0x22
40ac8a:	5f                   	pop    %edi
40ac8b:	89 38                	mov    %edi,(%eax)
40ac8d:	e8 9c cf ff ff       	call   0x407c2e
40ac92:	e9 a8 02 00 00       	jmp    0x40af3f
40ac97:	8b 55 08             	mov    0x8(%ebp),%edx
40ac9a:	8b 02                	mov    (%edx),%eax
40ac9c:	8b 4a 04             	mov    0x4(%edx),%ecx
40ac9f:	89 45 e0             	mov    %eax,-0x20(%ebp)
40aca2:	8b c1                	mov    %ecx,%eax
40aca4:	c1 e8 14             	shr    $0x14,%eax
40aca7:	25 ff 07 00 00       	and    $0x7ff,%eax
40acac:	3d ff 07 00 00       	cmp    $0x7ff,%eax
40acb1:	75 52                	jne    0x40ad05
40acb3:	3b db                	cmp    %ebx,%ebx
40acb5:	75 4e                	jne    0x40ad05
40acb7:	53                   	push   %ebx
40acb8:	ff 75 24             	push   0x24(%ebp)
40acbb:	53                   	push   %ebx
40acbc:	57                   	push   %edi
40acbd:	ff 75 18             	push   0x18(%ebp)
40acc0:	ff 75 14             	push   0x14(%ebp)
40acc3:	ff 75 10             	push   0x10(%ebp)
40acc6:	56                   	push   %esi
40acc7:	52                   	push   %edx
40acc8:	e8 8b 02 00 00       	call   0x40af58
40accd:	8b f8                	mov    %eax,%edi
40accf:	83 c4 24             	add    $0x24,%esp
40acd2:	85 ff                	test   %edi,%edi
40acd4:	74 07                	je     0x40acdd
40acd6:	88 1e                	mov    %bl,(%esi)
40acd8:	e9 62 02 00 00       	jmp    0x40af3f
40acdd:	6a 65                	push   $0x65
40acdf:	56                   	push   %esi
40ace0:	e8 7b dd 00 00       	call   0x418a60
40ace5:	59                   	pop    %ecx
40ace6:	59                   	pop    %ecx
40ace7:	85 c0                	test   %eax,%eax
40ace9:	74 13                	je     0x40acfe
40aceb:	38 5d 20             	cmp    %bl,0x20(%ebp)
40acee:	0f 94 c1             	sete   %cl
40acf1:	fe c9                	dec    %cl
40acf3:	80 e1 e0             	and    $0xe0,%cl
40acf6:	80 c1 70             	add    $0x70,%cl
40acf9:	88 08                	mov    %cl,(%eax)
40acfb:	88 58 03             	mov    %bl,0x3(%eax)
40acfe:	8b fb                	mov    %ebx,%edi
40ad00:	e9 3a 02 00 00       	jmp    0x40af3f
40ad05:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
40ad0b:	8b c3                	mov    %ebx,%eax
40ad0d:	0b c1                	or     %ecx,%eax
40ad0f:	74 04                	je     0x40ad15
40ad11:	c6 06 2d             	movb   $0x2d,(%esi)
40ad14:	46                   	inc    %esi
40ad15:	8b 4a 04             	mov    0x4(%edx),%ecx
40ad18:	33 db                	xor    %ebx,%ebx
40ad1a:	38 5d 20             	cmp    %bl,0x20(%ebp)
40ad1d:	6a 30                	push   $0x30
40ad1f:	0f 94 c3             	sete   %bl
40ad22:	c7 45 f4 ff 03 00 00 	movl   $0x3ff,-0xc(%ebp)
40ad29:	4b                   	dec    %ebx
40ad2a:	33 c0                	xor    %eax,%eax
40ad2c:	83 e3 e0             	and    $0xffffffe0,%ebx
40ad2f:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
40ad35:	83 c3 27             	add    $0x27,%ebx
40ad38:	0b c1                	or     %ecx,%eax
40ad3a:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40ad3d:	58                   	pop    %eax
40ad3e:	75 1f                	jne    0x40ad5f
40ad40:	88 06                	mov    %al,(%esi)
40ad42:	46                   	inc    %esi
40ad43:	8b 42 04             	mov    0x4(%edx),%eax
40ad46:	8b 0a                	mov    (%edx),%ecx
40ad48:	25 ff ff 0f 00       	and    $0xfffff,%eax
40ad4d:	0b c8                	or     %eax,%ecx
40ad4f:	75 05                	jne    0x40ad56
40ad51:	21 4d f4             	and    %ecx,-0xc(%ebp)
40ad54:	eb 0d                	jmp    0x40ad63
40ad56:	c7 45 f4 fe 03 00 00 	movl   $0x3fe,-0xc(%ebp)
40ad5d:	eb 04                	jmp    0x40ad63
40ad5f:	c6 06 31             	movb   $0x31,(%esi)
40ad62:	46                   	inc    %esi
40ad63:	8b ce                	mov    %esi,%ecx
40ad65:	46                   	inc    %esi
40ad66:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40ad69:	85 ff                	test   %edi,%edi
40ad6b:	75 05                	jne    0x40ad72
40ad6d:	c6 01 00             	movb   $0x0,(%ecx)
40ad70:	eb 0f                	jmp    0x40ad81
40ad72:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40ad75:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40ad7b:	8b 00                	mov    (%eax),%eax
40ad7d:	8a 00                	mov    (%eax),%al
40ad7f:	88 01                	mov    %al,(%ecx)
40ad81:	8b 42 04             	mov    0x4(%edx),%eax
40ad84:	25 ff ff 0f 00       	and    $0xfffff,%eax
40ad89:	89 45 f0             	mov    %eax,-0x10(%ebp)
40ad8c:	77 09                	ja     0x40ad97
40ad8e:	83 3a 00             	cmpl   $0x0,(%edx)
40ad91:	0f 86 c5 00 00 00    	jbe    0x40ae5c
40ad97:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ad9b:	b9 00 00 0f 00       	mov    $0xf0000,%ecx
40ada0:	6a 30                	push   $0x30
40ada2:	58                   	pop    %eax
40ada3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ada6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40ada9:	85 ff                	test   %edi,%edi
40adab:	7e 53                	jle    0x40ae00
40adad:	8b 02                	mov    (%edx),%eax
40adaf:	8b 52 04             	mov    0x4(%edx),%edx
40adb2:	23 45 fc             	and    -0x4(%ebp),%eax
40adb5:	23 d1                	and    %ecx,%edx
40adb7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40adba:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40adc0:	0f bf c9             	movswl %cx,%ecx
40adc3:	e8 b8 d5 00 00       	call   0x418380
40adc8:	6a 30                	push   $0x30
40adca:	59                   	pop    %ecx
40adcb:	66 03 c1             	add    %cx,%ax
40adce:	0f b7 c0             	movzwl %ax,%eax
40add1:	83 f8 39             	cmp    $0x39,%eax
40add4:	76 02                	jbe    0x40add8
40add6:	03 c3                	add    %ebx,%eax
40add8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40addb:	8b 55 08             	mov    0x8(%ebp),%edx
40adde:	88 06                	mov    %al,(%esi)
40ade0:	46                   	inc    %esi
40ade1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ade4:	0f ac c8 04          	shrd   $0x4,%ecx,%eax
40ade8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40adeb:	8b 45 f8             	mov    -0x8(%ebp),%eax
40adee:	c1 e9 04             	shr    $0x4,%ecx
40adf1:	83 e8 04             	sub    $0x4,%eax
40adf4:	4f                   	dec    %edi
40adf5:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40adf8:	89 45 f8             	mov    %eax,-0x8(%ebp)
40adfb:	66 85 c0             	test   %ax,%ax
40adfe:	79 a9                	jns    0x40ada9
40ae00:	66 85 c0             	test   %ax,%ax
40ae03:	78 57                	js     0x40ae5c
40ae05:	8b 02                	mov    (%edx),%eax
40ae07:	8b 52 04             	mov    0x4(%edx),%edx
40ae0a:	23 45 fc             	and    -0x4(%ebp),%eax
40ae0d:	23 d1                	and    %ecx,%edx
40ae0f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ae12:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40ae18:	0f bf c9             	movswl %cx,%ecx
40ae1b:	e8 60 d5 00 00       	call   0x418380
40ae20:	66 83 f8 08          	cmp    $0x8,%ax
40ae24:	76 36                	jbe    0x40ae5c
40ae26:	6a 30                	push   $0x30
40ae28:	8d 46 ff             	lea    -0x1(%esi),%eax
40ae2b:	5b                   	pop    %ebx
40ae2c:	8a 08                	mov    (%eax),%cl
40ae2e:	80 f9 66             	cmp    $0x66,%cl
40ae31:	74 05                	je     0x40ae38
40ae33:	80 f9 46             	cmp    $0x46,%cl
40ae36:	75 05                	jne    0x40ae3d
40ae38:	88 18                	mov    %bl,(%eax)
40ae3a:	48                   	dec    %eax
40ae3b:	eb ef                	jmp    0x40ae2c
40ae3d:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40ae40:	3b 45 e8             	cmp    -0x18(%ebp),%eax
40ae43:	74 14                	je     0x40ae59
40ae45:	8a 08                	mov    (%eax),%cl
40ae47:	80 f9 39             	cmp    $0x39,%cl
40ae4a:	75 07                	jne    0x40ae53
40ae4c:	80 c3 3a             	add    $0x3a,%bl
40ae4f:	88 18                	mov    %bl,(%eax)
40ae51:	eb 09                	jmp    0x40ae5c
40ae53:	fe c1                	inc    %cl
40ae55:	88 08                	mov    %cl,(%eax)