403783:	8d 45 f4             	lea    -0xc(%ebp),%eax
403786:	89 5d f4             	mov    %ebx,-0xc(%ebp)
403789:	50                   	push   %eax
40378a:	6a 01                	push   $0x1
40378c:	56                   	push   %esi
40378d:	ff 15 cc e0 40 00    	call   *0x40e0cc
403793:	85 c0                	test   %eax,%eax
403795:	75 0a                	jne    0x4037a1
403797:	ba ad 00 00 00       	mov    $0xad,%edx
40379c:	e9 7b ff ff ff       	jmp    0x40371c
4037a1:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
4037a4:	74 07                	je     0x4037ad
4037a6:	ba ae 00 00 00       	mov    $0xae,%edx
4037ab:	eb 4b                	jmp    0x4037f8
4037ad:	53                   	push   %ebx
4037ae:	6a 01                	push   $0x1
4037b0:	56                   	push   %esi
4037b1:	ff 15 cc e0 40 00    	call   *0x40e0cc
4037b7:	85 c0                	test   %eax,%eax
4037b9:	75 38                	jne    0x4037f3
4037bb:	ff 15 44 e0 40 00    	call   *0x40e044
4037c1:	3d 2a 01 00 00       	cmp    $0x12a,%eax
4037c6:	75 2b                	jne    0x4037f3
4037c8:	53                   	push   %ebx
4037c9:	56                   	push   %esi
4037ca:	ff 15 f0 e0 40 00    	call   *0x40e0f0
4037d0:	83 f8 ff             	cmp    $0xffffffff,%eax
4037d3:	75 0a                	jne    0x4037df
4037d5:	ba b4 00 00 00       	mov    $0xb4,%edx
4037da:	e9 3d ff ff ff       	jmp    0x40371c
4037df:	85 c0                	test   %eax,%eax
4037e1:	74 07                	je     0x4037ea
4037e3:	ba b5 00 00 00       	mov    $0xb5,%edx
4037e8:	eb 0e                	jmp    0x4037f8
4037ea:	8b 45 f8             	mov    -0x8(%ebp),%eax
4037ed:	89 07                	mov    %eax,(%edi)
4037ef:	33 c0                	xor    %eax,%eax
4037f1:	eb 16                	jmp    0x403809
4037f3:	ba b1 00 00 00       	mov    $0xb1,%edx
4037f8:	be ff ff 00 80       	mov    $0x8000ffff,%esi
4037fd:	56                   	push   %esi
4037fe:	51                   	push   %ecx
4037ff:	8b 4d 04             	mov    0x4(%ebp),%ecx
403802:	e8 2c fd ff ff       	call   0x403533
403807:	8b c6                	mov    %esi,%eax
403809:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40380c:	5f                   	pop    %edi
40380d:	5e                   	pop    %esi
40380e:	33 cd                	xor    %ebp,%ecx
403810:	5b                   	pop    %ebx
403811:	e8 4a 66 00 00       	call   0x409e60
403816:	c9                   	leave
403817:	c3                   	ret
403818:	8b ff                	mov    %edi,%edi
40381a:	55                   	push   %ebp
40381b:	8b ec                	mov    %esp,%ebp
40381d:	83 e4 f8             	and    $0xfffffff8,%esp
403820:	81 ec 1c 02 00 00    	sub    $0x21c,%esp
403826:	a1 50 d1 40 00       	mov    0x40d150,%eax
40382b:	33 c4                	xor    %esp,%eax
40382d:	89 84 24 18 02 00 00 	mov    %eax,0x218(%esp)
403834:	8b 45 08             	mov    0x8(%ebp),%eax
403837:	ba 04 01 00 00       	mov    $0x104,%edx
40383c:	53                   	push   %ebx
40383d:	56                   	push   %esi
40383e:	57                   	push   %edi
40383f:	51                   	push   %ecx
403840:	51                   	push   %ecx
403841:	33 ff                	xor    %edi,%edi
403843:	89 44 24 1c          	mov    %eax,0x1c(%esp)
403847:	51                   	push   %ecx
403848:	8d 4c 24 24          	lea    0x24(%esp),%ecx
40384c:	89 38                	mov    %edi,(%eax)
40384e:	89 78 04             	mov    %edi,0x4(%eax)
403851:	e8 6a ee ff ff       	call   0x4026c0
403856:	68 f0 16 40 00       	push   $0x4016f0
40385b:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
40385f:	e8 b7 ed ff ff       	call   0x40261b
403864:	8d 44 24 18          	lea    0x18(%esp),%eax
403868:	50                   	push   %eax
403869:	57                   	push   %edi
40386a:	68 03 00 1f 00       	push   $0x1f0003
40386f:	ff 15 dc e0 40 00    	call   *0x40e0dc
403875:	8b f0                	mov    %eax,%esi
403877:	85 f6                	test   %esi,%esi
403879:	75 1d                	jne    0x403898
40387b:	ff 15 44 e0 40 00    	call   *0x40e044
403881:	83 f8 02             	cmp    $0x2,%eax
403884:	74 48                	je     0x4038ce
403886:	51                   	push   %ecx
403887:	8b 4d 04             	mov    0x4(%ebp),%ecx
40388a:	ba c9 00 00 00       	mov    $0xc9,%edx
40388f:	e8 be fc ff ff       	call   0x403552
403894:	8b f8                	mov    %eax,%edi
403896:	eb 36                	jmp    0x4038ce
403898:	8d 54 24 10          	lea    0x10(%esp),%edx
40389c:	89 7c 24 10          	mov    %edi,0x10(%esp)
4038a0:	8b ce                	mov    %esi,%ecx
4038a2:	e8 48 fe ff ff       	call   0x4036ef
4038a7:	8b d8                	mov    %eax,%ebx
4038a9:	85 db                	test   %ebx,%ebx
4038ab:	79 13                	jns    0x4038c0
4038ad:	53                   	push   %ebx
4038ae:	51                   	push   %ecx
4038af:	8b 4d 04             	mov    0x4(%ebp),%ecx
4038b2:	ba cf 00 00 00       	mov    $0xcf,%edx
4038b7:	e8 77 fc ff ff       	call   0x403533
4038bc:	8b fb                	mov    %ebx,%edi
4038be:	eb 0e                	jmp    0x4038ce
4038c0:	8b 4c 24 14          	mov    0x14(%esp),%ecx
4038c4:	8b 44 24 10          	mov    0x10(%esp),%eax
4038c8:	99                   	cltd
4038c9:	89 01                	mov    %eax,(%ecx)
4038cb:	89 51 04             	mov    %edx,0x4(%ecx)
4038ce:	85 f6                	test   %esi,%esi
4038d0:	74 06                	je     0x4038d8
4038d2:	56                   	push   %esi
4038d3:	e8 d2 fc ff ff       	call   0x4035aa
4038d8:	8b 8c 24 24 02 00 00 	mov    0x224(%esp),%ecx
4038df:	8b c7                	mov    %edi,%eax
4038e1:	5f                   	pop    %edi
4038e2:	5e                   	pop    %esi
4038e3:	5b                   	pop    %ebx
4038e4:	33 cc                	xor    %esp,%ecx
4038e6:	e8 75 65 00 00       	call   0x409e60
4038eb:	8b e5                	mov    %ebp,%esp
4038ed:	5d                   	pop    %ebp
4038ee:	c2 08 00             	ret    $0x8
4038f1:	8b ff                	mov    %edi,%edi
4038f3:	55                   	push   %ebp
4038f4:	8b ec                	mov    %esp,%ebp
4038f6:	83 ec 0c             	sub    $0xc,%esp
4038f9:	8b 45 0c             	mov    0xc(%ebp),%eax
4038fc:	53                   	push   %ebx
4038fd:	56                   	push   %esi
4038fe:	8b 75 08             	mov    0x8(%ebp),%esi
403901:	57                   	push   %edi
403902:	8b f9                	mov    %ecx,%edi
403904:	33 c9                	xor    %ecx,%ecx
403906:	89 47 04             	mov    %eax,0x4(%edi)
403909:	8b 46 04             	mov    0x4(%esi),%eax
40390c:	89 47 08             	mov    %eax,0x8(%edi)
40390f:	89 4f 0c             	mov    %ecx,0xc(%edi)
403912:	66 8b 46 20          	mov    0x20(%esi),%ax
403916:	66 89 47 10          	mov    %ax,0x10(%edi)
40391a:	8a 06                	mov    (%esi),%al
40391c:	88 47 12             	mov    %al,0x12(%edi)
40391f:	8d 47 14             	lea    0x14(%edi),%eax
403922:	89 08                	mov    %ecx,(%eax)
403924:	89 45 f8             	mov    %eax,-0x8(%ebp)
403927:	8b 46 48             	mov    0x48(%esi),%eax
40392a:	89 47 18             	mov    %eax,0x18(%edi)
40392d:	8b 46 4c             	mov    0x4c(%esi),%eax
403930:	89 47 1c             	mov    %eax,0x1c(%edi)
403933:	8d 47 20             	lea    0x20(%edi),%eax
403936:	89 08                	mov    %ecx,(%eax)
403938:	8b 4e 0c             	mov    0xc(%esi),%ecx
40393b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40393e:	e8 1b f4 ff ff       	call   0x402d5e
403943:	8b 4e 1c             	mov    0x1c(%esi),%ecx
403946:	8b d8                	mov    %eax,%ebx
403948:	e8 f9 f3 ff ff       	call   0x402d46
40394d:	8b 4e 44             	mov    0x44(%esi),%ecx
403950:	03 d8                	add    %eax,%ebx
403952:	e8 ef f3 ff ff       	call   0x402d46
403957:	03 d8                	add    %eax,%ebx
403959:	83 7f 24 00          	cmpl   $0x0,0x24(%edi)
40395d:	74 05                	je     0x403964
40395f:	39 5f 28             	cmp    %ebx,0x28(%edi)
403962:	73 2d                	jae    0x403991
403964:	6a 08                	push   $0x8
403966:	8b d3                	mov    %ebx,%edx
403968:	59                   	pop    %ecx
403969:	e8 45 f0 ff ff       	call   0x4029b3
40396e:	89 45 fc             	mov    %eax,-0x4(%ebp)
403971:	85 c0                	test   %eax,%eax
403973:	74 1c                	je     0x403991
403975:	8b 77 24             	mov    0x24(%edi),%esi
403978:	ff 15 68 e0 40 00    	call   *0x40e068
40397e:	56                   	push   %esi
40397f:	6a 00                	push   $0x0
403981:	50                   	push   %eax
403982:	ff 15 64 e0 40 00    	call   *0x40e064
403988:	8b 45 fc             	mov    -0x4(%ebp),%eax
40398b:	89 47 24             	mov    %eax,0x24(%edi)
40398e:	89 5f 28             	mov    %ebx,0x28(%edi)
403991:	8b 4f 24             	mov    0x24(%edi),%ecx
403994:	85 c9                	test   %ecx,%ecx
403996:	74 42                	je     0x4039da
403998:	8b 77 28             	mov    0x28(%edi),%esi
40399b:	8d 47 0c             	lea    0xc(%edi),%eax
40399e:	8b 7d 08             	mov    0x8(%ebp),%edi
4039a1:	03 f1                	add    %ecx,%esi
4039a3:	50                   	push   %eax
4039a4:	8b d6                	mov    %esi,%edx
4039a6:	ff 77 1c             	push   0x1c(%edi)
4039a9:	e8 9e 0f 00 00       	call   0x40494c
4039ae:	ff 75 f8             	push   -0x8(%ebp)
4039b1:	8b d6                	mov    %esi,%edx
4039b3:	8b c8                	mov    %eax,%ecx
4039b5:	ff 77 44             	push   0x44(%edi)
4039b8:	e8 8f 0f 00 00       	call   0x40494c
4039bd:	ff 75 f4             	push   -0xc(%ebp)
4039c0:	8b d6                	mov    %esi,%edx
4039c2:	8b c8                	mov    %eax,%ecx
4039c4:	ff 77 0c             	push   0xc(%edi)
4039c7:	e8 16 0f 00 00       	call   0x4048e2
4039cc:	2b f0                	sub    %eax,%esi
4039ce:	56                   	push   %esi
4039cf:	6a 00                	push   $0x0
4039d1:	50                   	push   %eax
4039d2:	e8 d4 6e 00 00       	call   0x40a8ab
4039d7:	83 c4 0c             	add    $0xc,%esp
4039da:	5f                   	pop    %edi
4039db:	5e                   	pop    %esi
4039dc:	5b                   	pop    %ebx
4039dd:	c9                   	leave
4039de:	c2 08 00             	ret    $0x8
4039e1:	8b ff                	mov    %edi,%edi
4039e3:	55                   	push   %ebp
4039e4:	8b ec                	mov    %esp,%ebp
4039e6:	51                   	push   %ecx
4039e7:	51                   	push   %ecx
4039e8:	53                   	push   %ebx
4039e9:	8b d9                	mov    %ecx,%ebx
4039eb:	56                   	push   %esi
4039ec:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4039ef:	0f b7 43 14          	movzwl 0x14(%ebx),%eax
4039f3:	8b 73 10             	mov    0x10(%ebx),%esi
4039f6:	6b c0 2c             	imul   $0x2c,%eax,%eax
4039f9:	03 c6                	add    %esi,%eax
4039fb:	3b f0                	cmp    %eax,%esi
4039fd:	74 2f                	je     0x403a2e
4039ff:	57                   	push   %edi
403a00:	8d 7e 24             	lea    0x24(%esi),%edi
403a03:	8b d8                	mov    %eax,%ebx
403a05:	8b 37                	mov    (%edi),%esi
403a07:	ff 15 68 e0 40 00    	call   *0x40e068
403a0d:	56                   	push   %esi
403a0e:	33 f6                	xor    %esi,%esi
403a10:	56                   	push   %esi
403a11:	50                   	push   %eax
403a12:	ff 15 64 e0 40 00    	call   *0x40e064
403a18:	89 37                	mov    %esi,(%edi)
403a1a:	8d 7f 2c             	lea    0x2c(%edi),%edi
403a1d:	89 77 d8             	mov    %esi,-0x28(%edi)
403a20:	8d 47 dc             	lea    -0x24(%edi),%eax
403a23:	3b c3                	cmp    %ebx,%eax
403a25:	75 de                	jne    0x403a05
403a27:	8b 5d f8             	mov    -0x8(%ebp),%ebx
403a2a:	5f                   	pop    %edi
403a2b:	8b 73 10             	mov    0x10(%ebx),%esi
403a2e:	ff 15 68 e0 40 00    	call   *0x40e068
403a34:	56                   	push   %esi
403a35:	6a 00                	push   $0x0
403a37:	50                   	push   %eax
403a38:	ff 15 64 e0 40 00    	call   *0x40e064
403a3e:	33 c0                	xor    %eax,%eax
403a40:	21 43 10             	and    %eax,0x10(%ebx)
403a43:	5e                   	pop    %esi
403a44:	89 43 14             	mov    %eax,0x14(%ebx)
403a47:	5b                   	pop    %ebx
403a48:	c9                   	leave
403a49:	c3                   	ret
403a4a:	8b ff                	mov    %edi,%edi
403a4c:	55                   	push   %ebp
403a4d:	8b ec                	mov    %esp,%ebp
403a4f:	51                   	push   %ecx
403a50:	8b 45 08             	mov    0x8(%ebp),%eax
403a53:	53                   	push   %ebx
403a54:	56                   	push   %esi
403a55:	8b f1                	mov    %ecx,%esi
403a57:	89 45 fc             	mov    %eax,-0x4(%ebp)
403a5a:	57                   	push   %edi
403a5b:	6a 2c                	push   $0x2c
403a5d:	5f                   	pop    %edi
403a5e:	8b 4e 10             	mov    0x10(%esi),%ecx
403a61:	8b 5e 0c             	mov    0xc(%esi),%ebx
403a64:	85 c9                	test   %ecx,%ecx
403a66:	75 49                	jne    0x403ab1
403a68:	85 db                	test   %ebx,%ebx
403a6a:	0f 84 a1 00 00 00    	je     0x403b11
403a70:	6a 08                	push   $0x8
403a72:	ba dc 00 00 00       	mov    $0xdc,%edx
403a77:	59                   	pop    %ecx
403a78:	e8 36 ef ff ff       	call   0x4029b3
403a7d:	8b c8                	mov    %eax,%ecx
403a7f:	89 4e 10             	mov    %ecx,0x10(%esi)
403a82:	85 c9                	test   %ecx,%ecx
403a84:	0f 84 87 00 00 00    	je     0x403b11
403a8a:	6a 05                	push   $0x5
403a8c:	58                   	pop    %eax
403a8d:	66 89 46 14          	mov    %ax,0x14(%esi)
403a91:	33 c0                	xor    %eax,%eax
403a93:	66 89 46 16          	mov    %ax,0x16(%esi)
403a97:	8d 81 dc 00 00 00    	lea    0xdc(%ecx),%eax
403a9d:	3b c8                	cmp    %eax,%ecx
403a9f:	74 0c                	je     0x403aad
403aa1:	66 89 39             	mov    %di,(%ecx)
403aa4:	03 cf                	add    %edi,%ecx
403aa6:	3b c8                	cmp    %eax,%ecx
403aa8:	75 f7                	jne    0x403aa1
403aaa:	8b 4e 10             	mov    0x10(%esi),%ecx
403aad:	85 c9                	test   %ecx,%ecx
403aaf:	74 60                	je     0x403b11
403ab1:	85 db                	test   %ebx,%ebx
403ab3:	8b f9                	mov    %ecx,%edi
403ab5:	8b 5d fc             	mov    -0x4(%ebp),%ebx
403ab8:	74 2c                	je     0x403ae6
403aba:	0f b7 46 14          	movzwl 0x14(%esi),%eax
403abe:	6b d0 2c             	imul   $0x2c,%eax,%edx
403ac1:	03 d1                	add    %ecx,%edx
403ac3:	3b ca                	cmp    %edx,%ecx
403ac5:	74 1f                	je     0x403ae6
403ac7:	8b 7e 0c             	mov    0xc(%esi),%edi
403aca:	83 c1 08             	add    $0x8,%ecx
403acd:	39 79 fc             	cmp    %edi,-0x4(%ecx)
403ad0:	76 07                	jbe    0x403ad9
403ad2:	8b 01                	mov    (%ecx),%eax
403ad4:	3b 43 04             	cmp    0x4(%ebx),%eax
403ad7:	74 38                	je     0x403b11
403ad9:	83 c1 2c             	add    $0x2c,%ecx
403adc:	8d 41 f8             	lea    -0x8(%ecx),%eax
403adf:	3b c2                	cmp    %edx,%eax
403ae1:	75 ea                	jne    0x403acd
403ae3:	8b 7e 10             	mov    0x10(%esi),%edi
403ae6:	0f b7 46 16          	movzwl 0x16(%esi),%eax
403aea:	33 d2                	xor    %edx,%edx
403aec:	0f b7 4e 14          	movzwl 0x14(%esi),%ecx
403af0:	40                   	inc    %eax
403af1:	f7 f1                	div    %ecx
403af3:	0f b7 c2             	movzwl %dx,%eax
403af6:	33 d2                	xor    %edx,%edx
403af8:	6b c8 2c             	imul   $0x2c,%eax,%ecx
403afb:	42                   	inc    %edx
403afc:	66 89 46 16          	mov    %ax,0x16(%esi)
403b00:	8b 46 08             	mov    0x8(%esi),%eax
403b03:	03 cf                	add    %edi,%ecx
403b05:	f0 0f c1 10          	lock xadd %edx,(%eax)
403b09:	42                   	inc    %edx
403b0a:	52                   	push   %edx
403b0b:	53                   	push   %ebx
403b0c:	e8 e0 fd ff ff       	call   0x4038f1
403b11:	5f                   	pop    %edi
403b12:	5e                   	pop    %esi
403b13:	5b                   	pop    %ebx
403b14:	c9                   	leave
403b15:	c2 04 00             	ret    $0x4
403b18:	8b ff                	mov    %edi,%edi
403b1a:	55                   	push   %ebp