401a43:	ff 15 24 81 40 00    	call   *0x408124
401a49:	85 c0                	test   %eax,%eax
401a4b:	74 13                	je     0x401a60
401a4d:	39 5d e0             	cmp    %ebx,-0x20(%ebp)
401a50:	74 14                	je     0x401a66
401a52:	56                   	push   %esi
401a53:	ff 75 08             	push   0x8(%ebp)
401a56:	ff 15 1c 81 40 00    	call   *0x40811c
401a5c:	85 c0                	test   %eax,%eax
401a5e:	75 06                	jne    0x401a66
401a60:	89 7d fc             	mov    %edi,-0x4(%ebp)
401a63:	66 89 1e             	mov    %bx,(%esi)
401a66:	66 89 9e fe 07 00 00 	mov    %bx,0x7fe(%esi)
401a6d:	e9 53 10 00 00       	jmp    0x402ac5
401a72:	8b 75 ec             	mov    -0x14(%ebp),%esi
401a75:	53                   	push   %ebx
401a76:	e8 a4 11 00 00       	call   0x402c1f
401a7b:	6a 01                	push   $0x1
401a7d:	8b f8                	mov    %eax,%edi
401a7f:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401a82:	e8 98 11 00 00       	call   0x402c1f
401a87:	59                   	pop    %ecx
401a88:	3b f3                	cmp    %ebx,%esi
401a8a:	59                   	pop    %ecx
401a8b:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401a8e:	75 08                	jne    0x401a98
401a90:	3b f8                	cmp    %eax,%edi
401a92:	7c 08                	jl     0x401a9c
401a94:	7e 8a                	jle    0x401a20
401a96:	eb 12                	jmp    0x401aaa
401a98:	3b f8                	cmp    %eax,%edi
401a9a:	73 08                	jae    0x401aa4
401a9c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
401a9f:	e9 2c 10 00 00       	jmp    0x402ad0
401aa4:	0f 86 76 ff ff ff    	jbe    0x401a20
401aaa:	8b 45 e8             	mov    -0x18(%ebp),%eax
401aad:	e9 1e 10 00 00       	jmp    0x402ad0
401ab2:	6a 01                	push   $0x1
401ab4:	e8 66 11 00 00       	call   0x402c1f
401ab9:	8b f8                	mov    %eax,%edi
401abb:	6a 02                	push   $0x2
401abd:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401ac0:	89 7d 08             	mov    %edi,0x8(%ebp)
401ac3:	e8 57 11 00 00       	call   0x402c1f
401ac8:	59                   	pop    %ecx
401ac9:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401acc:	59                   	pop    %ecx
401acd:	8b c8                	mov    %eax,%ecx
401acf:	8b 45 e4             	mov    -0x1c(%ebp),%eax
401ad2:	83 f8 0d             	cmp    $0xd,%eax
401ad5:	77 73                	ja     0x401b4a
401ad7:	ff 24 85 e7 2b 40 00 	jmp    *0x402be7(,%eax,4)
401ade:	03 f9                	add    %ecx,%edi
401ae0:	eb 6b                	jmp    0x401b4d
401ae2:	2b f9                	sub    %ecx,%edi
401ae4:	eb 67                	jmp    0x401b4d
401ae6:	0f af cf             	imul   %edi,%ecx
401ae9:	eb 17                	jmp    0x401b02
401aeb:	3b cb                	cmp    %ebx,%ecx
401aed:	74 44                	je     0x401b33
401aef:	8b c7                	mov    %edi,%eax
401af1:	99                   	cltd
401af2:	f7 f9                	idiv   %ecx
401af4:	8b f8                	mov    %eax,%edi
401af6:	eb 55                	jmp    0x401b4d
401af8:	0b cf                	or     %edi,%ecx
401afa:	eb 06                	jmp    0x401b02
401afc:	23 cf                	and    %edi,%ecx
401afe:	eb 02                	jmp    0x401b02
401b00:	33 cf                	xor    %edi,%ecx
401b02:	8b f9                	mov    %ecx,%edi
401b04:	eb 47                	jmp    0x401b4d
401b06:	33 c0                	xor    %eax,%eax
401b08:	3b fb                	cmp    %ebx,%edi
401b0a:	0f 94 c0             	sete   %al
401b0d:	eb e5                	jmp    0x401af4
401b0f:	3b fb                	cmp    %ebx,%edi
401b11:	75 0e                	jne    0x401b21
401b13:	eb 08                	jmp    0x401b1d
401b15:	33 ff                	xor    %edi,%edi
401b17:	eb 34                	jmp    0x401b4d
401b19:	3b fb                	cmp    %ebx,%edi
401b1b:	74 f8                	je     0x401b15
401b1d:	3b cb                	cmp    %ebx,%ecx
401b1f:	74 f4                	je     0x401b15
401b21:	33 ff                	xor    %edi,%edi
401b23:	47                   	inc    %edi
401b24:	eb 27                	jmp    0x401b4d
401b26:	3b cb                	cmp    %ebx,%ecx
401b28:	74 09                	je     0x401b33
401b2a:	8b c7                	mov    %edi,%eax
401b2c:	99                   	cltd
401b2d:	f7 f9                	idiv   %ecx
401b2f:	8b fa                	mov    %edx,%edi
401b31:	eb 1a                	jmp    0x401b4d
401b33:	33 ff                	xor    %edi,%edi
401b35:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
401b3c:	eb 0f                	jmp    0x401b4d
401b3e:	d3 e7                	shl    %cl,%edi
401b40:	eb 0b                	jmp    0x401b4d
401b42:	d3 ff                	sar    %cl,%edi
401b44:	eb 07                	jmp    0x401b4d
401b46:	d3 ef                	shr    %cl,%edi
401b48:	eb 03                	jmp    0x401b4d
401b4a:	8b 7d 08             	mov    0x8(%ebp),%edi
401b4d:	57                   	push   %edi
401b4e:	e9 1a fa ff ff       	jmp    0x40156d
401b53:	6a 01                	push   $0x1
401b55:	e8 e7 10 00 00       	call   0x402c41
401b5a:	6a 02                	push   $0x2
401b5c:	8b f8                	mov    %eax,%edi
401b5e:	e8 bc 10 00 00       	call   0x402c1f
401b63:	50                   	push   %eax
401b64:	57                   	push   %edi
401b65:	56                   	push   %esi
401b66:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401b69:	ff 15 90 82 40 00    	call   *0x408290
401b6f:	83 c4 10             	add    $0x10,%esp
401b72:	e9 4e 0f 00 00       	jmp    0x402ac5
401b77:	8b 45 e0             	mov    -0x20(%ebp),%eax
401b7a:	8b 3d 38 ce 40 00    	mov    0x40ce38,%edi
401b80:	3b c3                	cmp    %ebx,%eax
401b82:	74 44                	je     0x401bc8
401b84:	48                   	dec    %eax
401b85:	3b fb                	cmp    %ebx,%edi
401b87:	0f 84 57 07 00 00    	je     0x4022e4
401b8d:	8b 3f                	mov    (%edi),%edi
401b8f:	3b c3                	cmp    %ebx,%eax
401b91:	75 f1                	jne    0x401b84
401b93:	3b fb                	cmp    %ebx,%edi
401b95:	0f 84 49 07 00 00    	je     0x4022e4
401b9b:	83 c7 04             	add    $0x4,%edi
401b9e:	be d8 a5 40 00       	mov    $0x40a5d8,%esi
401ba3:	57                   	push   %edi
401ba4:	56                   	push   %esi
401ba5:	e8 3e 48 00 00       	call   0x4063e8
401baa:	a1 38 ce 40 00       	mov    0x40ce38,%eax
401baf:	83 c0 04             	add    $0x4,%eax
401bb2:	50                   	push   %eax
401bb3:	57                   	push   %edi
401bb4:	e8 2f 48 00 00       	call   0x4063e8
401bb9:	a1 38 ce 40 00       	mov    0x40ce38,%eax
401bbe:	56                   	push   %esi
401bbf:	83 c0 04             	add    $0x4,%eax
401bc2:	50                   	push   %eax
401bc3:	e9 19 0e 00 00       	jmp    0x4029e1
401bc8:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
401bcb:	74 25                	je     0x401bf2
401bcd:	3b fb                	cmp    %ebx,%edi
401bcf:	0f 84 b6 0c 00 00    	je     0x40288b
401bd5:	8d 47 04             	lea    0x4(%edi),%eax
401bd8:	50                   	push   %eax
401bd9:	56                   	push   %esi
401bda:	e8 09 48 00 00       	call   0x4063e8
401bdf:	8b 07                	mov    (%edi),%eax
401be1:	57                   	push   %edi
401be2:	a3 38 ce 40 00       	mov    %eax,0x40ce38
401be7:	ff 15 28 81 40 00    	call   *0x408128
401bed:	e9 d3 0e 00 00       	jmp    0x402ac5
401bf2:	68 04 08 00 00       	push   $0x804
401bf7:	6a 40                	push   $0x40
401bf9:	ff 15 34 81 40 00    	call   *0x408134
401bff:	ff 75 d8             	push   -0x28(%ebp)
401c02:	8b f0                	mov    %eax,%esi
401c04:	8d 46 04             	lea    0x4(%esi),%eax
401c07:	50                   	push   %eax
401c08:	e8 fd 47 00 00       	call   0x40640a
401c0d:	a1 38 ce 40 00       	mov    0x40ce38,%eax
401c12:	89 06                	mov    %eax,(%esi)
401c14:	89 35 38 ce 40 00    	mov    %esi,0x40ce38
401c1a:	e9 a6 0e 00 00       	jmp    0x402ac5
401c1f:	6a 03                	push   $0x3
401c21:	e8 f9 0f 00 00       	call   0x402c1f
401c26:	6a 04                	push   $0x4
401c28:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401c2b:	89 45 f0             	mov    %eax,-0x10(%ebp)
401c2e:	e8 ec 0f 00 00       	call   0x402c1f
401c33:	f6 45 ec 01          	testb  $0x1,-0x14(%ebp)
401c37:	59                   	pop    %ecx
401c38:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401c3b:	59                   	pop    %ecx
401c3c:	89 45 08             	mov    %eax,0x8(%ebp)
401c3f:	74 0a                	je     0x401c4b
401c41:	6a 33                	push   $0x33
401c43:	e8 f9 0f 00 00       	call   0x402c41
401c48:	89 45 f0             	mov    %eax,-0x10(%ebp)
401c4b:	f6 45 ec 02          	testb  $0x2,-0x14(%ebp)
401c4f:	74 0a                	je     0x401c5b
401c51:	6a 44                	push   $0x44
401c53:	e8 e9 0f 00 00       	call   0x402c41
401c58:	89 45 08             	mov    %eax,0x8(%ebp)
401c5b:	83 7d d4 21          	cmpl   $0x21,-0x2c(%ebp)
401c5f:	6a 01                	push   $0x1
401c61:	75 4c                	jne    0x401caf
401c63:	e8 b7 0f 00 00       	call   0x402c1f
401c68:	6a 02                	push   $0x2
401c6a:	8b f8                	mov    %eax,%edi
401c6c:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401c6f:	e8 ab 0f 00 00       	call   0x402c1f
401c74:	59                   	pop    %ecx
401c75:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401c78:	59                   	pop    %ecx
401c79:	8b 4d ec             	mov    -0x14(%ebp),%ecx
401c7c:	c1 f9 02             	sar    $0x2,%ecx
401c7f:	74 1e                	je     0x401c9f
401c81:	8d 55 d0             	lea    -0x30(%ebp),%edx
401c84:	52                   	push   %edx
401c85:	51                   	push   %ecx
401c86:	53                   	push   %ebx
401c87:	ff 75 08             	push   0x8(%ebp)
401c8a:	ff 75 f0             	push   -0x10(%ebp)
401c8d:	50                   	push   %eax
401c8e:	57                   	push   %edi
401c8f:	ff 15 8c 82 40 00    	call   *0x40828c
401c95:	f7 d8                	neg    %eax
401c97:	1b c0                	sbb    %eax,%eax
401c99:	40                   	inc    %eax
401c9a:	89 45 fc             	mov    %eax,-0x4(%ebp)
401c9d:	eb 43                	jmp    0x401ce2
401c9f:	ff 75 08             	push   0x8(%ebp)
401ca2:	ff 75 f0             	push   -0x10(%ebp)
401ca5:	50                   	push   %eax
401ca6:	57                   	push   %edi
401ca7:	ff 15 18 82 40 00    	call   *0x408218
401cad:	eb 30                	jmp    0x401cdf
401caf:	e8 8d 0f 00 00       	call   0x402c41
401cb4:	6a 12                	push   $0x12
401cb6:	8b f8                	mov    %eax,%edi
401cb8:	e8 84 0f 00 00       	call   0x402c41
401cbd:	66 8b 08             	mov    (%eax),%cx
401cc0:	66 f7 d9             	neg    %cx
401cc3:	1b c9                	sbb    %ecx,%ecx
401cc5:	23 c8                	and    %eax,%ecx
401cc7:	66 8b 07             	mov    (%edi),%ax
401cca:	66 f7 d8             	neg    %ax
401ccd:	1b c0                	sbb    %eax,%eax
401ccf:	51                   	push   %ecx
401cd0:	23 c7                	and    %edi,%eax
401cd2:	50                   	push   %eax
401cd3:	ff 75 08             	push   0x8(%ebp)
401cd6:	ff 75 f0             	push   -0x10(%ebp)
401cd9:	ff 15 74 82 40 00    	call   *0x408274
401cdf:	89 45 d0             	mov    %eax,-0x30(%ebp)
401ce2:	39 5d d8             	cmp    %ebx,-0x28(%ebp)
401ce5:	0f 8c da 0d 00 00    	jl     0x402ac5
401ceb:	ff 75 d0             	push   -0x30(%ebp)
401cee:	e9 7a f8 ff ff       	jmp    0x40156d
401cf3:	53                   	push   %ebx
401cf4:	e8 26 0f 00 00       	call   0x402c1f
401cf9:	59                   	pop    %ecx
401cfa:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401cfd:	50                   	push   %eax
401cfe:	ff 15 6c 82 40 00    	call   *0x40826c
401d04:	85 c0                	test   %eax,%eax
401d06:	0f 84 14 fd ff ff    	je     0x401a20
401d0c:	8b 45 dc             	mov    -0x24(%ebp),%eax
401d0f:	e9 bc 0d 00 00       	jmp    0x402ad0
401d14:	6a 02                	push   $0x2
401d16:	e8 04 0f 00 00       	call   0x402c1f
401d1b:	6a 01                	push   $0x1
401d1d:	8b f8                	mov    %eax,%edi
401d1f:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401d22:	e8 f8 0e 00 00       	call   0x402c1f
401d27:	59                   	pop    %ecx
401d28:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401d2b:	59                   	pop    %ecx
401d2c:	57                   	push   %edi
401d2d:	50                   	push   %eax
401d2e:	ff 15 e4 81 40 00    	call   *0x4081e4
401d34:	e9 59 08 00 00       	jmp    0x402592
401d39:	a1 a8 a2 42 00       	mov    0x42a2a8,%eax
401d3e:	8b 4d dc             	mov    -0x24(%ebp),%ecx
401d41:	53                   	push   %ebx
401d42:	8d 34 08             	lea    (%eax,%ecx,1),%esi
401d45:	e8 d5 0e 00 00       	call   0x402c1f
401d4a:	59                   	pop    %ecx
401d4b:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401d4e:	56                   	push   %esi
401d4f:	6a eb                	push   $0xffffffeb
401d51:	50                   	push   %eax
401d52:	ff 15 70 82 40 00    	call   *0x408270
401d58:	e9 68 0d 00 00       	jmp    0x402ac5
401d5d:	ff 75 dc             	push   -0x24(%ebp)
401d60:	ff 75 f8             	push   -0x8(%ebp)
401d63:	ff 15 e4 81 40 00    	call   *0x4081e4
401d69:	8b f0                	mov    %eax,%esi
401d6b:	8d 45 a8             	lea    -0x58(%ebp),%eax
401d6e:	50                   	push   %eax
401d6f:	56                   	push   %esi
401d70:	ff 15 24 82 40 00    	call   *0x408224
401d76:	8b 45 b4             	mov    -0x4c(%ebp),%eax
401d79:	6a 10                	push   $0x10
401d7b:	0f af 45 e0          	imul   -0x20(%ebp),%eax
401d7f:	50                   	push   %eax
401d80:	8b 45 b0             	mov    -0x50(%ebp),%eax
401d83:	0f af 45 e0          	imul   -0x20(%ebp),%eax
401d87:	50                   	push   %eax
401d88:	53                   	push   %ebx
401d89:	53                   	push   %ebx
401d8a:	e8 b2 0e 00 00       	call   0x402c41
401d8f:	50                   	push   %eax
401d90:	53                   	push   %ebx
401d91:	ff 15 60 82 40 00    	call   *0x408260
401d97:	50                   	push   %eax
401d98:	53                   	push   %ebx
401d99:	68 72 01 00 00       	push   $0x172
401d9e:	56                   	push   %esi
401d9f:	ff 15 18 82 40 00    	call   *0x408218
401da5:	3b c3                	cmp    %ebx,%eax
401da7:	0f 84 18 0d 00 00    	je     0x402ac5
401dad:	50                   	push   %eax
401dae:	ff 15 5c 80 40 00    	call   *0x40805c
401db4:	e9 0c 0d 00 00       	jmp    0x402ac5
401db9:	ff 75 f8             	push   -0x8(%ebp)
401dbc:	ff 15 54 82 40 00    	call   *0x408254
401dc2:	6a 02                	push   $0x2
401dc4:	8b f8                	mov    %eax,%edi
401dc6:	e8 54 0e 00 00       	call   0x402c1f
401dcb:	59                   	pop    %ecx
401dcc:	8b d8                	mov    %eax,%ebx
401dce:	6a 48                	push   $0x48
401dd0:	6a 5a                	push   $0x5a
401dd2:	57                   	push   %edi
401dd3:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401dd6:	ff 15 60 80 40 00    	call   *0x408060
401ddc:	50                   	push   %eax
401ddd:	53                   	push   %ebx
401dde:	ff 15 54 81 40 00    	call   *0x408154
401de4:	57                   	push   %edi
401de5:	ff 75 f8             	push   -0x8(%ebp)
401de8:	f7 d8                	neg    %eax
401dea:	a3 d8 cd 40 00       	mov    %eax,0x40cdd8
401def:	ff 15 0c 82 40 00    	call   *0x40820c
401df5:	6a 03                	push   $0x3
401df7:	e8 23 0e 00 00       	call   0x402c1f
401dfc:	a3 e8 cd 40 00       	mov    %eax,0x40cde8
401e01:	8a 45 e8             	mov    -0x18(%ebp),%al
401e04:	59                   	pop    %ecx
401e05:	89 55 b4             	mov    %edx,-0x4c(%ebp)
401e08:	ff 75 dc             	push   -0x24(%ebp)
401e0b:	8a c8                	mov    %al,%cl
401e0d:	80 e1 01             	and    $0x1,%cl
401e10:	c6 05 ef cd 40 00 01 	movb   $0x1,0x40cdef
401e17:	88 0d ec cd 40 00    	mov    %cl,0x40cdec
401e1d:	8a c8                	mov    %al,%cl
401e1f:	80 e1 02             	and    $0x2,%cl
401e22:	24 04                	and    $0x4,%al
401e24:	68 f4 cd 40 00       	push   $0x40cdf4
401e29:	88 0d ed cd 40 00    	mov    %cl,0x40cded
401e2f:	a2 ee cd 40 00       	mov    %al,0x40cdee