40cca5:	e8 e6 30 00 00       	call   0x40fd90
40ccaa:	83 c4 10             	add    $0x10,%esp
40ccad:	85 c0                	test   %eax,%eax
40ccaf:	74 02                	je     0x40ccb3
40ccb1:	8b df                	mov    %edi,%ebx
40ccb3:	6a 09                	push   $0x9
40ccb5:	e8 06 28 00 00       	call   0x40f4c0
40ccba:	83 c4 04             	add    $0x4,%esp
40ccbd:	8b c3                	mov    %ebx,%eax
40ccbf:	5f                   	pop    %edi
40ccc0:	5e                   	pop    %esi
40ccc1:	5b                   	pop    %ebx
40ccc2:	59                   	pop    %ecx
40ccc3:	c3                   	ret
40ccc4:	6a 09                	push   $0x9
40ccc6:	e8 f5 27 00 00       	call   0x40f4c0
40cccb:	8b 0d 8c 89 43 00    	mov    0x43898c,%ecx
40ccd1:	83 c4 04             	add    $0x4,%esp
40ccd4:	56                   	push   %esi
40ccd5:	57                   	push   %edi
40ccd6:	6a 10                	push   $0x10
40ccd8:	51                   	push   %ecx
40ccd9:	ff 15 e0 95 43 00    	call   *0x4395e0
40ccdf:	5f                   	pop    %edi
40cce0:	5e                   	pop    %esi
40cce1:	5b                   	pop    %ebx
40cce2:	59                   	pop    %ecx
40cce3:	c3                   	ret
40cce4:	90                   	nop
40cce5:	90                   	nop
40cce6:	90                   	nop
40cce7:	90                   	nop
40cce8:	90                   	nop
40cce9:	90                   	nop
40ccea:	90                   	nop
40cceb:	90                   	nop
40ccec:	90                   	nop
40cced:	90                   	nop
40ccee:	90                   	nop
40ccef:	90                   	nop
40ccf0:	83 ec 0c             	sub    $0xc,%esp
40ccf3:	53                   	push   %ebx
40ccf4:	55                   	push   %ebp
40ccf5:	8b 6c 24 18          	mov    0x18(%esp),%ebp
40ccf9:	56                   	push   %esi
40ccfa:	57                   	push   %edi
40ccfb:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
40cd02:	00
40cd03:	8a 5d 00             	mov    0x0(%ebp),%bl
40cd06:	45                   	inc    %ebp
40cd07:	88 5c 24 10          	mov    %bl,0x10(%esp)
40cd0b:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40cd0f:	83 3d 54 1d 43 00 01 	cmpl   $0x1,0x431d54
40cd16:	7e 18                	jle    0x40cd30
40cd18:	8b 74 24 10          	mov    0x10(%esp),%esi
40cd1c:	6a 08                	push   $0x8
40cd1e:	8b c6                	mov    %esi,%eax
40cd20:	25 ff 00 00 00       	and    $0xff,%eax
40cd25:	50                   	push   %eax
40cd26:	e8 05 19 00 00       	call   0x40e630
40cd2b:	83 c4 08             	add    $0x8,%esp
40cd2e:	eb 18                	jmp    0x40cd48
40cd30:	8b 74 24 10          	mov    0x10(%esp),%esi
40cd34:	8b 15 48 1b 43 00    	mov    0x431b48,%edx
40cd3a:	8b ce                	mov    %esi,%ecx
40cd3c:	81 e1 ff 00 00 00    	and    $0xff,%ecx
40cd42:	8a 04 4a             	mov    (%edx,%ecx,2),%al
40cd45:	83 e0 08             	and    $0x8,%eax
40cd48:	85 c0                	test   %eax,%eax
40cd4a:	74 0a                	je     0x40cd56
40cd4c:	8a 5d 00             	mov    0x0(%ebp),%bl
40cd4f:	45                   	inc    %ebp
40cd50:	88 5c 24 10          	mov    %bl,0x10(%esp)
40cd54:	eb b9                	jmp    0x40cd0f
40cd56:	80 fb 2d             	cmp    $0x2d,%bl
40cd59:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40cd5d:	75 07                	jne    0x40cd66
40cd5f:	83 4c 24 2c 02       	orl    $0x2,0x2c(%esp)
40cd64:	eb 05                	jmp    0x40cd6b
40cd66:	80 fb 2b             	cmp    $0x2b,%bl
40cd69:	75 10                	jne    0x40cd7b
40cd6b:	8a 5d 00             	mov    0x0(%ebp),%bl
40cd6e:	45                   	inc    %ebp
40cd6f:	88 5c 24 10          	mov    %bl,0x10(%esp)
40cd73:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40cd77:	8b 74 24 10          	mov    0x10(%esp),%esi
40cd7b:	8b 7c 24 28          	mov    0x28(%esp),%edi
40cd7f:	85 ff                	test   %edi,%edi
40cd81:	0f 8c d2 01 00 00    	jl     0x40cf59
40cd87:	83 ff 01             	cmp    $0x1,%edi
40cd8a:	0f 84 c9 01 00 00    	je     0x40cf59
40cd90:	83 ff 24             	cmp    $0x24,%edi
40cd93:	0f 8f c0 01 00 00    	jg     0x40cf59
40cd99:	85 ff                	test   %edi,%edi
40cd9b:	75 21                	jne    0x40cdbe
40cd9d:	80 fb 30             	cmp    $0x30,%bl
40cda0:	74 07                	je     0x40cda9
40cda2:	bf 0a 00 00 00       	mov    $0xa,%edi
40cda7:	eb 15                	jmp    0x40cdbe
40cda9:	8a 45 00             	mov    0x0(%ebp),%al
40cdac:	3c 78                	cmp    $0x78,%al
40cdae:	74 09                	je     0x40cdb9
40cdb0:	3c 58                	cmp    $0x58,%al
40cdb2:	bf 08 00 00 00       	mov    $0x8,%edi
40cdb7:	75 05                	jne    0x40cdbe
40cdb9:	bf 10 00 00 00       	mov    $0x10,%edi
40cdbe:	83 ff 10             	cmp    $0x10,%edi
40cdc1:	75 21                	jne    0x40cde4
40cdc3:	80 fb 30             	cmp    $0x30,%bl
40cdc6:	75 1c                	jne    0x40cde4
40cdc8:	8a 45 00             	mov    0x0(%ebp),%al
40cdcb:	3c 78                	cmp    $0x78,%al
40cdcd:	74 04                	je     0x40cdd3
40cdcf:	3c 58                	cmp    $0x58,%al
40cdd1:	75 11                	jne    0x40cde4
40cdd3:	8a 5d 01             	mov    0x1(%ebp),%bl
40cdd6:	45                   	inc    %ebp
40cdd7:	88 5c 24 10          	mov    %bl,0x10(%esp)
40cddb:	45                   	inc    %ebp
40cddc:	8b 74 24 10          	mov    0x10(%esp),%esi
40cde0:	89 6c 24 14          	mov    %ebp,0x14(%esp)
40cde4:	83 c8 ff             	or     $0xffffffff,%eax
40cde7:	33 d2                	xor    %edx,%edx
40cde9:	f7 f7                	div    %edi
40cdeb:	8b e8                	mov    %eax,%ebp
40cded:	83 3d 54 1d 43 00 01 	cmpl   $0x1,0x431d54
40cdf4:	7e 13                	jle    0x40ce09
40cdf6:	81 e6 ff 00 00 00    	and    $0xff,%esi
40cdfc:	6a 04                	push   $0x4
40cdfe:	56                   	push   %esi
40cdff:	e8 2c 18 00 00       	call   0x40e630
40ce04:	83 c4 08             	add    $0x8,%esp
40ce07:	eb 11                	jmp    0x40ce1a
40ce09:	a1 48 1b 43 00       	mov    0x431b48,%eax
40ce0e:	81 e6 ff 00 00 00    	and    $0xff,%esi
40ce14:	8a 04 70             	mov    (%eax,%esi,2),%al
40ce17:	83 e0 04             	and    $0x4,%eax
40ce1a:	85 c0                	test   %eax,%eax
40ce1c:	74 08                	je     0x40ce26
40ce1e:	0f be cb             	movsbl %bl,%ecx
40ce21:	83 e9 30             	sub    $0x30,%ecx
40ce24:	eb 3d                	jmp    0x40ce63
40ce26:	83 3d 54 1d 43 00 01 	cmpl   $0x1,0x431d54
40ce2d:	7e 10                	jle    0x40ce3f
40ce2f:	68 03 01 00 00       	push   $0x103
40ce34:	56                   	push   %esi
40ce35:	e8 f6 17 00 00       	call   0x40e630
40ce3a:	83 c4 08             	add    $0x8,%esp
40ce3d:	eb 0f                	jmp    0x40ce4e
40ce3f:	8b 0d 48 1b 43 00    	mov    0x431b48,%ecx
40ce45:	66 8b 04 71          	mov    (%ecx,%esi,2),%ax
40ce49:	25 03 01 00 00       	and    $0x103,%eax
40ce4e:	85 c0                	test   %eax,%eax
40ce50:	74 62                	je     0x40ceb4
40ce52:	0f be d3             	movsbl %bl,%edx
40ce55:	52                   	push   %edx
40ce56:	e8 45 34 00 00       	call   0x4102a0
40ce5b:	8b c8                	mov    %eax,%ecx
40ce5d:	83 c4 04             	add    $0x4,%esp
40ce60:	83 e9 37             	sub    $0x37,%ecx
40ce63:	3b cf                	cmp    %edi,%ecx
40ce65:	73 4d                	jae    0x40ceb4
40ce67:	8b 54 24 2c          	mov    0x2c(%esp),%edx
40ce6b:	8b 74 24 18          	mov    0x18(%esp),%esi
40ce6f:	83 ca 08             	or     $0x8,%edx
40ce72:	3b f5                	cmp    %ebp,%esi
40ce74:	89 54 24 2c          	mov    %edx,0x2c(%esp)
40ce78:	72 19                	jb     0x40ce93
40ce7a:	75 0b                	jne    0x40ce87
40ce7c:	83 c8 ff             	or     $0xffffffff,%eax
40ce7f:	33 d2                	xor    %edx,%edx
40ce81:	f7 f7                	div    %edi
40ce83:	3b ca                	cmp    %edx,%ecx
40ce85:	76 0c                	jbe    0x40ce93
40ce87:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40ce8b:	0c 04                	or     $0x4,%al
40ce8d:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40ce91:	eb 09                	jmp    0x40ce9c
40ce93:	0f af f7             	imul   %edi,%esi
40ce96:	03 f1                	add    %ecx,%esi
40ce98:	89 74 24 18          	mov    %esi,0x18(%esp)
40ce9c:	8b 44 24 14          	mov    0x14(%esp),%eax
40cea0:	8a 18                	mov    (%eax),%bl
40cea2:	40                   	inc    %eax
40cea3:	88 5c 24 10          	mov    %bl,0x10(%esp)
40cea7:	89 44 24 14          	mov    %eax,0x14(%esp)
40ceab:	8b 74 24 10          	mov    0x10(%esp),%esi
40ceaf:	e9 39 ff ff ff       	jmp    0x40cded
40ceb4:	8b 54 24 14          	mov    0x14(%esp),%edx
40ceb8:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40cebc:	8b 74 24 24          	mov    0x24(%esp),%esi
40cec0:	4a                   	dec    %edx
40cec1:	a8 08                	test   $0x8,%al
40cec3:	89 54 24 14          	mov    %edx,0x14(%esp)
40cec7:	75 16                	jne    0x40cedf
40cec9:	85 f6                	test   %esi,%esi
40cecb:	74 08                	je     0x40ced5
40cecd:	8b 44 24 20          	mov    0x20(%esp),%eax
40ced1:	89 44 24 14          	mov    %eax,0x14(%esp)
40ced5:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
40cedc:	00
40cedd:	eb 53                	jmp    0x40cf32
40cedf:	a8 04                	test   $0x4,%al
40cee1:	75 21                	jne    0x40cf04
40cee3:	a8 01                	test   $0x1,%al
40cee5:	75 4b                	jne    0x40cf32
40cee7:	83 e0 02             	and    $0x2,%eax
40ceea:	74 0a                	je     0x40cef6
40ceec:	81 7c 24 18 00 00 00 	cmpl   $0x80000000,0x18(%esp)
40cef3:	80
40cef4:	77 0e                	ja     0x40cf04
40cef6:	85 c0                	test   %eax,%eax
40cef8:	75 38                	jne    0x40cf32
40cefa:	81 7c 24 18 ff ff ff 	cmpl   $0x7fffffff,0x18(%esp)
40cf01:	7f
40cf02:	76 2e                	jbe    0x40cf32
40cf04:	e8 87 07 00 00       	call   0x40d690
40cf09:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40cf0f:	8b 44 24 2c          	mov    0x2c(%esp),%eax
40cf13:	a8 01                	test   $0x1,%al
40cf15:	74 0a                	je     0x40cf21
40cf17:	c7 44 24 18 ff ff ff 	movl   $0xffffffff,0x18(%esp)
40cf1e:	ff
40cf1f:	eb 11                	jmp    0x40cf32
40cf21:	24 02                	and    $0x2,%al
40cf23:	f6 d8                	neg    %al
40cf25:	1b c0                	sbb    %eax,%eax
40cf27:	f7 d8                	neg    %eax
40cf29:	05 ff ff ff 7f       	add    $0x7fffffff,%eax
40cf2e:	89 44 24 18          	mov    %eax,0x18(%esp)
40cf32:	85 f6                	test   %esi,%esi
40cf34:	74 06                	je     0x40cf3c
40cf36:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40cf3a:	89 0e                	mov    %ecx,(%esi)
40cf3c:	f6 44 24 2c 02       	testb  $0x2,0x2c(%esp)
40cf41:	74 0a                	je     0x40cf4d
40cf43:	8b 54 24 18          	mov    0x18(%esp),%edx
40cf47:	f7 da                	neg    %edx
40cf49:	89 54 24 18          	mov    %edx,0x18(%esp)
40cf4d:	8b 44 24 18          	mov    0x18(%esp),%eax
40cf51:	5f                   	pop    %edi
40cf52:	5e                   	pop    %esi
40cf53:	5d                   	pop    %ebp
40cf54:	5b                   	pop    %ebx
40cf55:	83 c4 0c             	add    $0xc,%esp
40cf58:	c3                   	ret
40cf59:	8b 44 24 24          	mov    0x24(%esp),%eax
40cf5d:	85 c0                	test   %eax,%eax
40cf5f:	74 06                	je     0x40cf67
40cf61:	8b 4c 24 20          	mov    0x20(%esp),%ecx
40cf65:	89 08                	mov    %ecx,(%eax)
40cf67:	5f                   	pop    %edi
40cf68:	5e                   	pop    %esi
40cf69:	5d                   	pop    %ebp
40cf6a:	33 c0                	xor    %eax,%eax
40cf6c:	5b                   	pop    %ebx
40cf6d:	83 c4 0c             	add    $0xc,%esp
40cf70:	c3                   	ret
40cf71:	90                   	nop
40cf72:	90                   	nop
40cf73:	90                   	nop
40cf74:	90                   	nop
40cf75:	90                   	nop
40cf76:	90                   	nop
40cf77:	90                   	nop
40cf78:	90                   	nop
40cf79:	90                   	nop
40cf7a:	90                   	nop
40cf7b:	90                   	nop
40cf7c:	90                   	nop
40cf7d:	90                   	nop
40cf7e:	90                   	nop
40cf7f:	90                   	nop
40cf80:	8b 44 24 0c          	mov    0xc(%esp),%eax
40cf84:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40cf88:	8b 54 24 04          	mov    0x4(%esp),%edx
40cf8c:	6a 01                	push   $0x1
40cf8e:	50                   	push   %eax
40cf8f:	51                   	push   %ecx
40cf90:	52                   	push   %edx
40cf91:	e8 5a fd ff ff       	call   0x40ccf0
40cf96:	83 c4 10             	add    $0x10,%esp
40cf99:	c3                   	ret
40cf9a:	90                   	nop
40cf9b:	90                   	nop
40cf9c:	90                   	nop
40cf9d:	90                   	nop
40cf9e:	90                   	nop
40cf9f:	90                   	nop
40cfa0:	55                   	push   %ebp
40cfa1:	8b ec                	mov    %esp,%ebp
40cfa3:	57                   	push   %edi
40cfa4:	56                   	push   %esi
40cfa5:	8b 75 0c             	mov    0xc(%ebp),%esi
40cfa8:	8b 4d 10             	mov    0x10(%ebp),%ecx
40cfab:	8b 7d 08             	mov    0x8(%ebp),%edi
40cfae:	8b c1                	mov    %ecx,%eax
40cfb0:	8b d1                	mov    %ecx,%edx
40cfb2:	03 c6                	add    %esi,%eax
40cfb4:	3b fe                	cmp    %esi,%edi
40cfb6:	76 08                	jbe    0x40cfc0
40cfb8:	3b f8                	cmp    %eax,%edi
40cfba:	0f 82 78 01 00 00    	jb     0x40d138
40cfc0:	f7 c7 03 00 00 00    	test   $0x3,%edi
40cfc6:	75 14                	jne    0x40cfdc
40cfc8:	c1 e9 02             	shr    $0x2,%ecx
40cfcb:	83 e2 03             	and    $0x3,%edx
40cfce:	83 f9 08             	cmp    $0x8,%ecx
40cfd1:	72 29                	jb     0x40cffc
40cfd3:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40cfd5:	ff 24 95 e8 d0 40 00 	jmp    *0x40d0e8(,%edx,4)
40cfdc:	8b c7                	mov    %edi,%eax
40cfde:	ba 03 00 00 00       	mov    $0x3,%edx
40cfe3:	83 e9 04             	sub    $0x4,%ecx
40cfe6:	72 0c                	jb     0x40cff4
40cfe8:	83 e0 03             	and    $0x3,%eax
40cfeb:	03 c8                	add    %eax,%ecx
40cfed:	ff 24 85 00 d0 40 00 	jmp    *0x40d000(,%eax,4)
40cff4:	ff 24 8d f8 d0 40 00 	jmp    *0x40d0f8(,%ecx,4)
40cffb:	90                   	nop
40cffc:	ff 24 8d 7c d0 40 00 	jmp    *0x40d07c(,%ecx,4)
40d003:	90                   	nop
40d004:	10 d0                	adc    %dl,%al
40d006:	40                   	inc    %eax
40d007:	00 3c d0             	add    %bh,(%eax,%edx,8)
40d00a:	40                   	inc    %eax
40d00b:	00 60 d0             	add    %ah,-0x30(%eax)
40d00e:	40                   	inc    %eax
40d00f:	00 23                	add    %ah,(%ebx)
40d011:	d1 8a 06 88 07 8a    	rorl   $1,-0x75f877fa(%edx)
40d017:	46                   	inc    %esi
40d018:	01 88 47 01 8a 46    	add    %ecx,0x468a0147(%eax)
40d01e:	02 c1                	add    %cl,%al
40d020:	e9 02 88 47 02       	jmp    0x2885827
40d025:	83 c6 03             	add    $0x3,%esi
40d028:	83 c7 03             	add    $0x3,%edi
40d02b:	83 f9 08             	cmp    $0x8,%ecx
40d02e:	72 cc                	jb     0x40cffc
40d030:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40d032:	ff 24 95 e8 d0 40 00 	jmp    *0x40d0e8(,%edx,4)
40d039:	2e 8b c0             	cs mov %eax,%eax
40d03c:	23 d1                	and    %ecx,%edx
40d03e:	8a 06                	mov    (%esi),%al
40d040:	88 07                	mov    %al,(%edi)
40d042:	8a 46 01             	mov    0x1(%esi),%al
40d045:	c1 e9 02             	shr    $0x2,%ecx
40d048:	88 47 01             	mov    %al,0x1(%edi)
40d04b:	83 c6 02             	add    $0x2,%esi
40d04e:	83 c7 02             	add    $0x2,%edi
40d051:	83 f9 08             	cmp    $0x8,%ecx