403867:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40386d:	50                   	push   %eax
40386e:	e8 f2 fd ff ff       	call   0x403665
403873:	8b f0                	mov    %eax,%esi
403875:	85 f6                	test   %esi,%esi
403877:	78 46                	js     0x4038bf
403879:	be 04 01 00 00       	mov    $0x104,%esi
40387e:	ff 75 08             	push   0x8(%ebp)
403881:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
403887:	56                   	push   %esi
403888:	50                   	push   %eax
403889:	e8 26 fe ff ff       	call   0x4036b4
40388e:	8b f0                	mov    %eax,%esi
403890:	85 f6                	test   %esi,%esi
403892:	78 2b                	js     0x4038bf
403894:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40389a:	50                   	push   %eax
40389b:	ff 15 38 b1 44 00    	call   *0x44b138
4038a1:	89 03                	mov    %eax,(%ebx)
4038a3:	85 c0                	test   %eax,%eax
4038a5:	74 8c                	je     0x403833
4038a7:	85 ff                	test   %edi,%edi
4038a9:	74 14                	je     0x4038bf
4038ab:	68 04 01 00 00       	push   $0x104
4038b0:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4038b6:	50                   	push   %eax
4038b7:	57                   	push   %edi
4038b8:	e8 e8 e8 ff ff       	call   0x4021a5
4038bd:	8b f0                	mov    %eax,%esi
4038bf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4038c2:	8b c6                	mov    %esi,%eax
4038c4:	5f                   	pop    %edi
4038c5:	5e                   	pop    %esi
4038c6:	33 cd                	xor    %ebp,%ecx
4038c8:	5b                   	pop    %ebx
4038c9:	e8 68 a5 02 00       	call   0x42de36
4038ce:	8b e5                	mov    %ebp,%esp
4038d0:	5d                   	pop    %ebp
4038d1:	c2 0c 00             	ret    $0xc
4038d4:	55                   	push   %ebp
4038d5:	8b ec                	mov    %esp,%ebp
4038d7:	8b 45 0c             	mov    0xc(%ebp),%eax
4038da:	ff 75 08             	push   0x8(%ebp)
4038dd:	f7 d8                	neg    %eax
4038df:	1b c0                	sbb    %eax,%eax
4038e1:	83 e0 08             	and    $0x8,%eax
4038e4:	50                   	push   %eax
4038e5:	ff 15 54 b1 44 00    	call   *0x44b154
4038eb:	50                   	push   %eax
4038ec:	ff 15 44 b1 44 00    	call   *0x44b144
4038f2:	5d                   	pop    %ebp
4038f3:	c2 08 00             	ret    $0x8
4038f6:	55                   	push   %ebp
4038f7:	8b ec                	mov    %esp,%ebp
4038f9:	51                   	push   %ecx
4038fa:	8b 4d 14             	mov    0x14(%ebp),%ecx
4038fd:	83 c8 ff             	or     $0xffffffff,%eax
403900:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403904:	56                   	push   %esi
403905:	57                   	push   %edi
403906:	8b 7d 0c             	mov    0xc(%ebp),%edi
403909:	03 cf                	add    %edi,%ecx
40390b:	3b cf                	cmp    %edi,%ecx
40390d:	0f 43 c1             	cmovae %ecx,%eax
403910:	1b f6                	sbb    %esi,%esi
403912:	81 e6 16 02 07 80    	and    $0x80070216,%esi
403918:	3b cf                	cmp    %edi,%ecx
40391a:	72 73                	jb     0x40398f
40391c:	f7 65 10             	mull   0x10(%ebp)
40391f:	8d 4d fc             	lea    -0x4(%ebp),%ecx
403922:	51                   	push   %ecx
403923:	52                   	push   %edx
403924:	50                   	push   %eax
403925:	e8 04 35 00 00       	call   0x406e2e
40392a:	8b f0                	mov    %eax,%esi
40392c:	85 f6                	test   %esi,%esi
40392e:	78 5f                	js     0x40398f
403930:	53                   	push   %ebx
403931:	8b 5d 08             	mov    0x8(%ebp),%ebx
403934:	83 3b 00             	cmpl   $0x0,(%ebx)
403937:	74 2c                	je     0x403965
403939:	ff 33                	push   (%ebx)
40393b:	e8 11 02 00 00       	call   0x403b51
403940:	0f af 7d 10          	imul   0x10(%ebp),%edi
403944:	3b c7                	cmp    %edi,%eax
403946:	73 46                	jae    0x40398e
403948:	6a 01                	push   $0x1
40394a:	ff 75 fc             	push   -0x4(%ebp)
40394d:	ff 33                	push   (%ebx)
40394f:	e8 1e 01 00 00       	call   0x403a72
403954:	85 c0                	test   %eax,%eax
403956:	75 34                	jne    0x40398c
403958:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40395d:	50                   	push   %eax
40395e:	68 86 00 00 00       	push   $0x86
403963:	eb 19                	jmp    0x40397e
403965:	6a 01                	push   $0x1
403967:	ff 75 fc             	push   -0x4(%ebp)
40396a:	e8 65 ff ff ff       	call   0x4038d4
40396f:	85 c0                	test   %eax,%eax
403971:	75 19                	jne    0x40398c
403973:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
403978:	50                   	push   %eax
403979:	68 8e 00 00 00       	push   $0x8e
40397e:	68 18 b8 44 00       	push   $0x44b818
403983:	8b f0                	mov    %eax,%esi
403985:	e8 49 fe ff ff       	call   0x4037d3
40398a:	eb 02                	jmp    0x40398e
40398c:	89 03                	mov    %eax,(%ebx)
40398e:	5b                   	pop    %ebx
40398f:	5f                   	pop    %edi
403990:	8b c6                	mov    %esi,%eax
403992:	5e                   	pop    %esi
403993:	8b e5                	mov    %ebp,%esp
403995:	5d                   	pop    %ebp
403996:	c2 10 00             	ret    $0x10
403999:	55                   	push   %ebp
40399a:	8b ec                	mov    %esp,%ebp
40399c:	56                   	push   %esi
40399d:	ff 75 08             	push   0x8(%ebp)
4039a0:	33 f6                	xor    %esi,%esi
4039a2:	56                   	push   %esi
4039a3:	ff 15 54 b1 44 00    	call   *0x44b154
4039a9:	50                   	push   %eax
4039aa:	ff 15 4c b1 44 00    	call   *0x44b14c
4039b0:	85 c0                	test   %eax,%eax
4039b2:	75 14                	jne    0x4039c8
4039b4:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4039ba:	0f b7 f0             	movzwl %ax,%esi
4039bd:	81 ce 00 00 07 80    	or     $0x80070000,%esi
4039c3:	85 c0                	test   %eax,%eax
4039c5:	0f 4e f0             	cmovle %eax,%esi
4039c8:	8b c6                	mov    %esi,%eax
4039ca:	5e                   	pop    %esi
4039cb:	5d                   	pop    %ebp
4039cc:	c2 04 00             	ret    $0x4
4039cf:	55                   	push   %ebp
4039d0:	8b ec                	mov    %esp,%ebp
4039d2:	51                   	push   %ecx
4039d3:	57                   	push   %edi
4039d4:	8b 7d 10             	mov    0x10(%ebp),%edi
4039d7:	85 ff                	test   %edi,%edi
4039d9:	75 07                	jne    0x4039e2
4039db:	33 c0                	xor    %eax,%eax
4039dd:	e9 89 00 00 00       	jmp    0x403a6b
4039e2:	53                   	push   %ebx
4039e3:	8b 5d 14             	mov    0x14(%ebp),%ebx
4039e6:	56                   	push   %esi
4039e7:	ff 75 1c             	push   0x1c(%ebp)
4039ea:	8b 75 18             	mov    0x18(%ebp),%esi
4039ed:	03 df                	add    %edi,%ebx
4039ef:	56                   	push   %esi
4039f0:	53                   	push   %ebx
4039f1:	ff 75 08             	push   0x8(%ebp)
4039f4:	e8 fd fe ff ff       	call   0x4038f6
4039f9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4039fc:	85 c0                	test   %eax,%eax
4039fe:	78 69                	js     0x403a69
403a00:	8b 45 08             	mov    0x8(%ebp),%eax
403a03:	8b 10                	mov    (%eax),%edx
403a05:	8d 43 ff             	lea    -0x1(%ebx),%eax
403a08:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403a0b:	89 55 18             	mov    %edx,0x18(%ebp)
403a0e:	3b c3                	cmp    %ebx,%eax
403a10:	76 40                	jbe    0x403a52
403a12:	8b c8                	mov    %eax,%ecx
403a14:	0f af ce             	imul   %esi,%ecx
403a17:	03 ca                	add    %edx,%ecx
403a19:	89 4d 1c             	mov    %ecx,0x1c(%ebp)
403a1c:	8d 48 ff             	lea    -0x1(%eax),%ecx
403a1f:	0f af ce             	imul   %esi,%ecx
403a22:	03 ca                	add    %edx,%ecx
403a24:	2b c3                	sub    %ebx,%eax
403a26:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
403a29:	8b f8                	mov    %eax,%edi
403a2b:	89 4d 08             	mov    %ecx,0x8(%ebp)
403a2e:	56                   	push   %esi
403a2f:	51                   	push   %ecx
403a30:	56                   	push   %esi
403a31:	53                   	push   %ebx
403a32:	e8 2d dc 01 00       	call   0x421664
403a37:	8b 4d 08             	mov    0x8(%ebp),%ecx
403a3a:	83 c4 10             	add    $0x10,%esp
403a3d:	2b ce                	sub    %esi,%ecx
403a3f:	2b de                	sub    %esi,%ebx
403a41:	89 4d 08             	mov    %ecx,0x8(%ebp)
403a44:	83 ef 01             	sub    $0x1,%edi
403a47:	75 e5                	jne    0x403a2e
403a49:	8b 7d 10             	mov    0x10(%ebp),%edi
403a4c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403a4f:	8b 55 18             	mov    0x18(%ebp),%edx
403a52:	0f af fe             	imul   %esi,%edi
403a55:	0f af de             	imul   %esi,%ebx
403a58:	57                   	push   %edi
403a59:	03 da                	add    %edx,%ebx
403a5b:	6a 00                	push   $0x0
403a5d:	53                   	push   %ebx
403a5e:	e8 0d bc 02 00       	call   0x42f670
403a63:	8b 45 fc             	mov    -0x4(%ebp),%eax
403a66:	83 c4 0c             	add    $0xc,%esp
403a69:	5e                   	pop    %esi
403a6a:	5b                   	pop    %ebx
403a6b:	5f                   	pop    %edi
403a6c:	8b e5                	mov    %ebp,%esp
403a6e:	5d                   	pop    %ebp
403a6f:	c2 18 00             	ret    $0x18
403a72:	55                   	push   %ebp
403a73:	8b ec                	mov    %esp,%ebp
403a75:	8b 45 10             	mov    0x10(%ebp),%eax
403a78:	ff 75 0c             	push   0xc(%ebp)
403a7b:	f7 d8                	neg    %eax
403a7d:	ff 75 08             	push   0x8(%ebp)
403a80:	1b c0                	sbb    %eax,%eax
403a82:	83 e0 08             	and    $0x8,%eax
403a85:	50                   	push   %eax
403a86:	ff 15 54 b1 44 00    	call   *0x44b154
403a8c:	50                   	push   %eax
403a8d:	ff 15 48 b1 44 00    	call   *0x44b148
403a93:	5d                   	pop    %ebp
403a94:	c2 0c 00             	ret    $0xc
403a97:	55                   	push   %ebp
403a98:	8b ec                	mov    %esp,%ebp
403a9a:	53                   	push   %ebx
403a9b:	56                   	push   %esi
403a9c:	57                   	push   %edi
403a9d:	ff 75 0c             	push   0xc(%ebp)
403aa0:	33 db                	xor    %ebx,%ebx
403aa2:	ff 75 08             	push   0x8(%ebp)
403aa5:	39 5d 10             	cmp    %ebx,0x10(%ebp)
403aa8:	6a 10                	push   $0x10
403aaa:	58                   	pop    %eax
403aab:	6a 18                	push   $0x18
403aad:	59                   	pop    %ecx
403aae:	0f 45 c1             	cmovne %ecx,%eax
403ab1:	50                   	push   %eax
403ab2:	ff 15 54 b1 44 00    	call   *0x44b154
403ab8:	50                   	push   %eax
403ab9:	ff 15 48 b1 44 00    	call   *0x44b148
403abf:	8b f0                	mov    %eax,%esi
403ac1:	85 f6                	test   %esi,%esi
403ac3:	75 5e                	jne    0x403b23
403ac5:	ff 75 10             	push   0x10(%ebp)
403ac8:	ff 75 0c             	push   0xc(%ebp)
403acb:	e8 04 fe ff ff       	call   0x4038d4
403ad0:	8b f0                	mov    %eax,%esi
403ad2:	85 f6                	test   %esi,%esi
403ad4:	74 67                	je     0x403b3d
403ad6:	ff 75 08             	push   0x8(%ebp)
403ad9:	e8 73 00 00 00       	call   0x403b51
403ade:	8b f8                	mov    %eax,%edi
403ae0:	83 ff ff             	cmp    $0xffffffff,%edi
403ae3:	75 07                	jne    0x403aec
403ae5:	bb 57 00 07 80       	mov    $0x80070057,%ebx
403aea:	eb 3e                	jmp    0x403b2a
403aec:	56                   	push   %esi
403aed:	e8 5f 00 00 00       	call   0x403b51
403af2:	8b c8                	mov    %eax,%ecx
403af4:	83 f9 ff             	cmp    $0xffffffff,%ecx
403af7:	74 ec                	je     0x403ae5
403af9:	3b cf                	cmp    %edi,%ecx
403afb:	0f 47 c7             	cmova  %edi,%eax
403afe:	50                   	push   %eax
403aff:	ff 75 08             	push   0x8(%ebp)
403b02:	51                   	push   %ecx
403b03:	56                   	push   %esi
403b04:	e8 5b db 01 00       	call   0x421664
403b09:	8b 45 08             	mov    0x8(%ebp),%eax
403b0c:	83 c4 10             	add    $0x10,%esp
403b0f:	85 ff                	test   %edi,%edi
403b11:	74 08                	je     0x403b1b
403b13:	88 18                	mov    %bl,(%eax)
403b15:	40                   	inc    %eax
403b16:	83 ef 01             	sub    $0x1,%edi
403b19:	75 f8                	jne    0x403b13
403b1b:	ff 75 08             	push   0x8(%ebp)
403b1e:	e8 76 fe ff ff       	call   0x403999
403b23:	8b 45 14             	mov    0x14(%ebp),%eax
403b26:	89 30                	mov    %esi,(%eax)
403b28:	8b f3                	mov    %ebx,%esi
403b2a:	85 f6                	test   %esi,%esi
403b2c:	74 06                	je     0x403b34
403b2e:	56                   	push   %esi
403b2f:	e8 65 fe ff ff       	call   0x403999
403b34:	5f                   	pop    %edi
403b35:	5e                   	pop    %esi
403b36:	8b c3                	mov    %ebx,%eax
403b38:	5b                   	pop    %ebx
403b39:	5d                   	pop    %ebp
403b3a:	c2 10 00             	ret    $0x10
403b3d:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
403b42:	53                   	push   %ebx
403b43:	6a 61                	push   $0x61
403b45:	68 18 b8 44 00       	push   $0x44b818
403b4a:	e8 84 fc ff ff       	call   0x4037d3
403b4f:	eb e3                	jmp    0x403b34
403b51:	55                   	push   %ebp
403b52:	8b ec                	mov    %esp,%ebp
403b54:	ff 75 08             	push   0x8(%ebp)
403b57:	6a 00                	push   $0x0
403b59:	ff 15 54 b1 44 00    	call   *0x44b154
403b5f:	50                   	push   %eax
403b60:	ff 15 50 b1 44 00    	call   *0x44b150
403b66:	5d                   	pop    %ebp
403b67:	c2 04 00             	ret    $0x4
403b6a:	55                   	push   %ebp
403b6b:	8b ec                	mov    %esp,%ebp
403b6d:	51                   	push   %ecx
403b6e:	53                   	push   %ebx
403b6f:	33 db                	xor    %ebx,%ebx
403b71:	56                   	push   %esi
403b72:	8b 75 08             	mov    0x8(%ebp),%esi
403b75:	8b c3                	mov    %ebx,%eax
403b77:	89 45 fc             	mov    %eax,-0x4(%ebp)
403b7a:	57                   	push   %edi
403b7b:	8b fb                	mov    %ebx,%edi
403b7d:	85 f6                	test   %esi,%esi
403b7f:	74 37                	je     0x403bb8
403b81:	66 39 1e             	cmp    %bx,(%esi)
403b84:	74 28                	je     0x403bae
403b86:	56                   	push   %esi
403b87:	ff 15 64 b1 44 00    	call   *0x44b164
403b8d:	85 c0                	test   %eax,%eax
403b8f:	74 1a                	je     0x403bab
403b91:	8d 45 fc             	lea    -0x4(%ebp),%eax
403b94:	47                   	inc    %edi
403b95:	50                   	push   %eax
403b96:	56                   	push   %esi
403b97:	e8 5e f9 ff ff       	call   0x4034fa
403b9c:	85 c0                	test   %eax,%eax
403b9e:	78 0b                	js     0x403bab
403ba0:	8b 45 fc             	mov    -0x4(%ebp),%eax
403ba3:	8b f0                	mov    %eax,%esi
403ba5:	85 c0                	test   %eax,%eax
403ba7:	75 d8                	jne    0x403b81
403ba9:	eb 03                	jmp    0x403bae
403bab:	8b 45 fc             	mov    -0x4(%ebp),%eax
403bae:	85 c0                	test   %eax,%eax
403bb0:	74 06                	je     0x403bb8
403bb2:	50                   	push   %eax
403bb3:	e8 37 19 04 00       	call   0x4454ef
403bb8:	8b c7                	mov    %edi,%eax
403bba:	5f                   	pop    %edi
403bbb:	5e                   	pop    %esi
403bbc:	5b                   	pop    %ebx
403bbd:	8b e5                	mov    %ebp,%esp
403bbf:	5d                   	pop    %ebp
403bc0:	c2 08 00             	ret    $0x8
403bc3:	55                   	push   %ebp
403bc4:	8b ec                	mov    %esp,%ebp
403bc6:	81 ec 7c 06 00 00    	sub    $0x67c,%esp