40598a:	55                   	push   %ebp
40598b:	8b ec                	mov    %esp,%ebp
40598d:	83 ec 1c             	sub    $0x1c,%esp
405990:	85 c9                	test   %ecx,%ecx
405992:	75 04                	jne    0x405998
405994:	33 c0                	xor    %eax,%eax
405996:	c9                   	leave
405997:	c3                   	ret
405998:	6a 1c                	push   $0x1c
40599a:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40599d:	50                   	push   %eax
40599e:	51                   	push   %ecx
40599f:	ff 15 30 21 41 00    	call   *0x412130
4059a5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4059a8:	c9                   	leave
4059a9:	c3                   	ret
4059aa:	56                   	push   %esi
4059ab:	57                   	push   %edi
4059ac:	6a 04                	push   $0x4
4059ae:	68 00 30 00 00       	push   $0x3000
4059b3:	8b f9                	mov    %ecx,%edi
4059b5:	57                   	push   %edi
4059b6:	6a 00                	push   $0x0
4059b8:	ff 15 d8 21 41 00    	call   *0x4121d8
4059be:	8b f0                	mov    %eax,%esi
4059c0:	57                   	push   %edi
4059c1:	8b ce                	mov    %esi,%ecx
4059c3:	e8 f1 00 00 00       	call   0x405ab9
4059c8:	59                   	pop    %ecx
4059c9:	5f                   	pop    %edi
4059ca:	8b c6                	mov    %esi,%eax
4059cc:	5e                   	pop    %esi
4059cd:	c3                   	ret
4059ce:	55                   	push   %ebp
4059cf:	8b ec                	mov    %esp,%ebp
4059d1:	51                   	push   %ecx
4059d2:	53                   	push   %ebx
4059d3:	56                   	push   %esi
4059d4:	57                   	push   %edi
4059d5:	8b f1                	mov    %ecx,%esi
4059d7:	33 ff                	xor    %edi,%edi
4059d9:	8b c2                	mov    %edx,%eax
4059db:	8b df                	mov    %edi,%ebx
4059dd:	89 45 fc             	mov    %eax,-0x4(%ebp)
4059e0:	85 f6                	test   %esi,%esi
4059e2:	74 0a                	je     0x4059ee
4059e4:	e8 a1 ff ff ff       	call   0x40598a
4059e9:	8b d8                	mov    %eax,%ebx
4059eb:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059ee:	85 c0                	test   %eax,%eax
4059f0:	74 29                	je     0x405a1b
4059f2:	8b c8                	mov    %eax,%ecx
4059f4:	e8 43 00 00 00       	call   0x405a3c
4059f9:	8b f8                	mov    %eax,%edi
4059fb:	85 f6                	test   %esi,%esi
4059fd:	74 27                	je     0x405a26
4059ff:	85 ff                	test   %edi,%edi
405a01:	74 18                	je     0x405a1b
405a03:	85 db                	test   %ebx,%ebx
405a05:	74 14                	je     0x405a1b
405a07:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
405a0a:	8b d6                	mov    %esi,%edx
405a0c:	8b cf                	mov    %edi,%ecx
405a0e:	0f 42 5d fc          	cmovb  -0x4(%ebp),%ebx
405a12:	53                   	push   %ebx
405a13:	e8 80 00 00 00       	call   0x405a98
405a18:	83 c4 04             	add    $0x4,%esp
405a1b:	85 f6                	test   %esi,%esi
405a1d:	74 07                	je     0x405a26
405a1f:	8b ce                	mov    %esi,%ecx
405a21:	e8 07 00 00 00       	call   0x405a2d
405a26:	8b c7                	mov    %edi,%eax
405a28:	5f                   	pop    %edi
405a29:	5e                   	pop    %esi
405a2a:	5b                   	pop    %ebx
405a2b:	c9                   	leave
405a2c:	c3                   	ret
405a2d:	68 00 80 00 00       	push   $0x8000
405a32:	6a 00                	push   $0x0
405a34:	51                   	push   %ecx
405a35:	ff 15 08 22 41 00    	call   *0x412208
405a3b:	c3                   	ret
405a3c:	6a 04                	push   $0x4
405a3e:	68 00 30 00 00       	push   $0x3000
405a43:	51                   	push   %ecx
405a44:	6a 00                	push   $0x0
405a46:	ff 15 d8 21 41 00    	call   *0x4121d8
405a4c:	c3                   	ret
405a4d:	85 c9                	test   %ecx,%ecx
405a4f:	75 07                	jne    0x405a58
405a51:	8b ca                	mov    %edx,%ecx
405a53:	e9 2f 00 00 00       	jmp    0x405a87
405a58:	85 d2                	test   %edx,%edx
405a5a:	75 08                	jne    0x405a64
405a5c:	e8 15 00 00 00       	call   0x405a76
405a61:	33 c0                	xor    %eax,%eax
405a63:	c3                   	ret
405a64:	52                   	push   %edx
405a65:	51                   	push   %ecx
405a66:	6a 00                	push   $0x0
405a68:	ff 15 bc 21 41 00    	call   *0x4121bc
405a6e:	50                   	push   %eax
405a6f:	ff 15 d4 21 41 00    	call   *0x4121d4
405a75:	c3                   	ret
405a76:	51                   	push   %ecx
405a77:	6a 00                	push   $0x0
405a79:	ff 15 bc 21 41 00    	call   *0x4121bc
405a7f:	50                   	push   %eax
405a80:	ff 15 14 21 41 00    	call   *0x412114
405a86:	c3                   	ret
405a87:	51                   	push   %ecx
405a88:	6a 00                	push   $0x0
405a8a:	ff 15 bc 21 41 00    	call   *0x4121bc
405a90:	50                   	push   %eax
405a91:	ff 15 c0 21 41 00    	call   *0x4121c0
405a97:	c3                   	ret
405a98:	55                   	push   %ebp
405a99:	8b ec                	mov    %esp,%ebp
405a9b:	56                   	push   %esi
405a9c:	8b 75 08             	mov    0x8(%ebp),%esi
405a9f:	85 f6                	test   %esi,%esi
405aa1:	74 11                	je     0x405ab4
405aa3:	57                   	push   %edi
405aa4:	8b f9                	mov    %ecx,%edi
405aa6:	2b fa                	sub    %edx,%edi
405aa8:	8a 02                	mov    (%edx),%al
405aaa:	88 04 17             	mov    %al,(%edi,%edx,1)
405aad:	42                   	inc    %edx
405aae:	83 ee 01             	sub    $0x1,%esi
405ab1:	75 f5                	jne    0x405aa8
405ab3:	5f                   	pop    %edi
405ab4:	8b c1                	mov    %ecx,%eax
405ab6:	5e                   	pop    %esi
405ab7:	5d                   	pop    %ebp
405ab8:	c3                   	ret
405ab9:	55                   	push   %ebp
405aba:	8b ec                	mov    %esp,%ebp
405abc:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
405ac0:	56                   	push   %esi
405ac1:	8b f1                	mov    %ecx,%esi
405ac3:	74 0e                	je     0x405ad3
405ac5:	ff 75 08             	push   0x8(%ebp)
405ac8:	6a 00                	push   $0x0
405aca:	56                   	push   %esi
405acb:	e8 82 b5 ff ff       	call   0x401052
405ad0:	83 c4 0c             	add    $0xc,%esp
405ad3:	8b c6                	mov    %esi,%eax
405ad5:	5e                   	pop    %esi
405ad6:	5d                   	pop    %ebp
405ad7:	c3                   	ret
405ad8:	c3                   	ret
405ad9:	c3                   	ret
405ada:	c3                   	ret
405adb:	51                   	push   %ecx
405adc:	6a 00                	push   $0x0
405ade:	ff 15 bc 21 41 00    	call   *0x4121bc
405ae4:	50                   	push   %eax
405ae5:	ff 15 c0 21 41 00    	call   *0x4121c0
405aeb:	c3                   	ret
405aec:	e9 ea ff ff ff       	jmp    0x405adb
405af1:	c3                   	ret
405af2:	68 10 28 41 00       	push   $0x412810
405af7:	ff 15 b8 21 41 00    	call   *0x4121b8
405afd:	68 1c 28 41 00       	push   $0x41281c
405b02:	50                   	push   %eax
405b03:	ff 15 b4 21 41 00    	call   *0x4121b4
405b09:	85 c0                	test   %eax,%eax
405b0b:	74 13                	je     0x405b20
405b0d:	68 10 20 00 00       	push   $0x2010
405b12:	68 50 28 41 00       	push   $0x412850
405b17:	68 60 28 41 00       	push   $0x412860
405b1c:	6a 00                	push   $0x0
405b1e:	ff d0                	call   *%eax
405b20:	6a 01                	push   $0x1
405b22:	ff 15 b0 21 41 00    	call   *0x4121b0
405b28:	cc                   	int3
405b29:	55                   	push   %ebp
405b2a:	8b ec                	mov    %esp,%ebp
405b2c:	51                   	push   %ecx
405b2d:	53                   	push   %ebx
405b2e:	56                   	push   %esi
405b2f:	33 f6                	xor    %esi,%esi
405b31:	89 55 fc             	mov    %edx,-0x4(%ebp)
405b34:	57                   	push   %edi
405b35:	8b 7d 08             	mov    0x8(%ebp),%edi
405b38:	8b d9                	mov    %ecx,%ebx
405b3a:	8b c6                	mov    %esi,%eax
405b3c:	eb 4f                	jmp    0x405b8d
405b3e:	46                   	inc    %esi
405b3f:	81 e6 ff 00 00 80    	and    $0x800000ff,%esi
405b45:	79 08                	jns    0x405b4f
405b47:	4e                   	dec    %esi
405b48:	81 ce 00 ff ff ff    	or     $0xffffff00,%esi
405b4e:	46                   	inc    %esi
405b4f:	8a 0c 1e             	mov    (%esi,%ebx,1),%cl
405b52:	0f b6 d1             	movzbl %cl,%edx
405b55:	03 c2                	add    %edx,%eax
405b57:	25 ff 00 00 80       	and    $0x800000ff,%eax
405b5c:	79 07                	jns    0x405b65
405b5e:	48                   	dec    %eax
405b5f:	0d 00 ff ff ff       	or     $0xffffff00,%eax
405b64:	40                   	inc    %eax
405b65:	89 45 08             	mov    %eax,0x8(%ebp)
405b68:	8a 04 18             	mov    (%eax,%ebx,1),%al
405b6b:	88 04 1e             	mov    %al,(%esi,%ebx,1)
405b6e:	8b 45 08             	mov    0x8(%ebp),%eax
405b71:	88 0c 18             	mov    %cl,(%eax,%ebx,1)
405b74:	0f b6 04 1e          	movzbl (%esi,%ebx,1),%eax
405b78:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405b7b:	03 c2                	add    %edx,%eax
405b7d:	0f b6 c0             	movzbl %al,%eax
405b80:	8a 04 18             	mov    (%eax,%ebx,1),%al
405b83:	30 01                	xor    %al,(%ecx)
405b85:	41                   	inc    %ecx
405b86:	8b 45 08             	mov    0x8(%ebp),%eax
405b89:	4f                   	dec    %edi
405b8a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405b8d:	85 ff                	test   %edi,%edi
405b8f:	7f ad                	jg     0x405b3e
405b91:	5f                   	pop    %edi
405b92:	5e                   	pop    %esi
405b93:	5b                   	pop    %ebx
405b94:	c9                   	leave
405b95:	c3                   	ret
405b96:	55                   	push   %ebp
405b97:	8b ec                	mov    %esp,%ebp
405b99:	51                   	push   %ecx
405b9a:	51                   	push   %ecx
405b9b:	53                   	push   %ebx
405b9c:	56                   	push   %esi
405b9d:	33 f6                	xor    %esi,%esi
405b9f:	89 55 fc             	mov    %edx,-0x4(%ebp)
405ba2:	57                   	push   %edi
405ba3:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405ba6:	8b fe                	mov    %esi,%edi
405ba8:	8b c7                	mov    %edi,%eax
405baa:	8a 1c 0f             	mov    (%edi,%ecx,1),%bl
405bad:	99                   	cltd
405bae:	f7 7d 08             	idivl  0x8(%ebp)
405bb1:	8b 45 fc             	mov    -0x4(%ebp),%eax
405bb4:	0f b6 cb             	movzbl %bl,%ecx
405bb7:	0f b6 04 02          	movzbl (%edx,%eax,1),%eax
405bbb:	03 f0                	add    %eax,%esi
405bbd:	03 f1                	add    %ecx,%esi
405bbf:	81 e6 ff 00 00 80    	and    $0x800000ff,%esi
405bc5:	79 08                	jns    0x405bcf
405bc7:	4e                   	dec    %esi
405bc8:	81 ce 00 ff ff ff    	or     $0xffffff00,%esi
405bce:	46                   	inc    %esi
405bcf:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405bd2:	8a 04 0e             	mov    (%esi,%ecx,1),%al
405bd5:	88 04 0f             	mov    %al,(%edi,%ecx,1)
405bd8:	47                   	inc    %edi
405bd9:	88 1c 0e             	mov    %bl,(%esi,%ecx,1)
405bdc:	81 ff 00 01 00 00    	cmp    $0x100,%edi
405be2:	7c c4                	jl     0x405ba8
405be4:	5f                   	pop    %edi
405be5:	5e                   	pop    %esi
405be6:	5b                   	pop    %ebx
405be7:	c9                   	leave
405be8:	c3                   	ret
405be9:	33 c0                	xor    %eax,%eax
405beb:	88 04 08             	mov    %al,(%eax,%ecx,1)
405bee:	40                   	inc    %eax
405bef:	3d 00 01 00 00       	cmp    $0x100,%eax
405bf4:	7c f5                	jl     0x405beb
405bf6:	c3                   	ret
405bf7:	8a 02                	mov    (%edx),%al
405bf9:	53                   	push   %ebx
405bfa:	8a 19                	mov    (%ecx),%bl
405bfc:	88 01                	mov    %al,(%ecx)
405bfe:	88 1a                	mov    %bl,(%edx)
405c00:	5b                   	pop    %ebx
405c01:	c3                   	ret
405c02:	55                   	push   %ebp
405c03:	8b ec                	mov    %esp,%ebp
405c05:	83 ec 18             	sub    $0x18,%esp
405c08:	56                   	push   %esi
405c09:	8b f1                	mov    %ecx,%esi
405c0b:	8d 4d e8             	lea    -0x18(%ebp),%ecx
405c0e:	83 26 00             	andl   $0x0,(%esi)
405c11:	83 66 04 00          	andl   $0x0,0x4(%esi)
405c15:	ff 72 04             	push   0x4(%edx)
405c18:	8b 12                	mov    (%edx),%edx
405c1a:	e8 e1 12 00 00       	call   0x406f00
405c1f:	59                   	pop    %ecx
405c20:	6a 14                	push   $0x14
405c22:	8d 45 e8             	lea    -0x18(%ebp),%eax
405c25:	8b ce                	mov    %esi,%ecx
405c27:	50                   	push   %eax
405c28:	e8 94 d1 ff ff       	call   0x402dc1
405c2d:	8b c6                	mov    %esi,%eax
405c2f:	5e                   	pop    %esi
405c30:	c9                   	leave
405c31:	c3                   	ret
405c32:	55                   	push   %ebp
405c33:	8b ec                	mov    %esp,%ebp
405c35:	81 ec 08 01 00 00    	sub    $0x108,%esp
405c3b:	8d 45 10             	lea    0x10(%ebp),%eax
405c3e:	56                   	push   %esi
405c3f:	8b f1                	mov    %ecx,%esi
405c41:	8d 4d f8             	lea    -0x8(%ebp),%ecx
405c44:	50                   	push   %eax
405c45:	e8 2f d2 ff ff       	call   0x402e79
405c4a:	33 c0                	xor    %eax,%eax
405c4c:	88 84 05 f8 fe ff ff 	mov    %al,-0x108(%ebp,%eax,1)
405c53:	40                   	inc    %eax
405c54:	3d 00 01 00 00       	cmp    $0x100,%eax
405c59:	7c f1                	jl     0x405c4c
405c5b:	ff 75 0c             	push   0xc(%ebp)
405c5e:	8b 55 08             	mov    0x8(%ebp),%edx
405c61:	8d 8d f8 fe ff ff    	lea    -0x108(%ebp),%ecx
405c67:	e8 2a ff ff ff       	call   0x405b96
405c6c:	ff 75 14             	push   0x14(%ebp)
405c6f:	8b 55 10             	mov    0x10(%ebp),%edx
405c72:	8d 8d f8 fe ff ff    	lea    -0x108(%ebp),%ecx
405c78:	e8 ac fe ff ff       	call   0x405b29
405c7d:	59                   	pop    %ecx
405c7e:	59                   	pop    %ecx
405c7f:	8d 45 10             	lea    0x10(%ebp),%eax
405c82:	8b ce                	mov    %esi,%ecx
405c84:	50                   	push   %eax
405c85:	e8 ef d1 ff ff       	call   0x402e79
405c8a:	8d 4d f8             	lea    -0x8(%ebp),%ecx
405c8d:	e8 d4 d1 ff ff       	call   0x402e66
405c92:	8d 4d 08             	lea    0x8(%ebp),%ecx
405c95:	e8 cc d1 ff ff       	call   0x402e66
405c9a:	8d 4d 10             	lea    0x10(%ebp),%ecx
405c9d:	e8 c4 d1 ff ff       	call   0x402e66
405ca2:	8b c6                	mov    %esi,%eax
405ca4:	5e                   	pop    %esi
405ca5:	c9                   	leave
405ca6:	c3                   	ret
405ca7:	55                   	push   %ebp
405ca8:	8b ec                	mov    %esp,%ebp
405caa:	83 ec 0c             	sub    $0xc,%esp
405cad:	56                   	push   %esi
405cae:	57                   	push   %edi
405caf:	8b f2                	mov    %edx,%esi
405cb1:	8b f9                	mov    %ecx,%edi
405cb3:	33 d2                	xor    %edx,%edx
405cb5:	8b c2                	mov    %edx,%eax
405cb7:	83 e0 03             	and    $0x3,%eax
405cba:	6a 03                	push   $0x3
405cbc:	59                   	pop    %ecx
405cbd:	2b c8                	sub    %eax,%ecx
405cbf:	c1 e1 03             	shl    $0x3,%ecx
405cc2:	83 fa 04             	cmp    $0x4,%edx
405cc5:	1b c0                	sbb    %eax,%eax
405cc7:	83 e0 04             	and    $0x4,%eax